Path: blob/main/Lab5/Jubypter_notebook_py.ipynb
2710 views
Classes
En esta sección veremos una aplicación del tema en la estimación de una función de costos translogaritmica
q: total output
p1 (PL): wage rate
p2 (PF) : capital price index
p3 (PK): fuel price
Getting filtered data to regressions
Generate a new class named
RegClass. The initial attributes of your class must beX,y, andintercept.X(covariables) must be a pd.DataFrame andy(endog) must be a pd.Series andinterceptcan beTrueorFalse, by defaultTrue. Also, you must specify the type of your class' parameters, and output and It must raise an error if the inputs do not meet the requirements. This class should have two methods:reg_OLS(You can add more if you think it is necessary). These methods should return the same output as the previously defined functions with the same name. The methodreg_OLSdoes not need an extra parameter to be executed. After executing the methodreg_OLS, any user should access the following attributes:beta_OLSandvar_OLS. They should look likebeta_OLS_outputandvar_OLS_output.
2.1. Inheritance
La Inheritance es la capacidad de una clase para derivar o heredar las propiedades de otra clase. Los beneficios de la herencia son:
Representa bien las relaciones del mundo real.
Proporciona reutilización de un código. No tenemos que escribir el mismo código una y otra vez. Además, nos permite agregar más características a una clase sin modificarla.
Es de naturaleza transitiva, lo que significa que si la clase B hereda de otra clase A, entonces todas las subclases de B heredarán automáticamente de la clase A.
Te ayudará a comprender cómo funciona Sklearn Class (libreria de modelos estadísticos).
El modelo base se llama clase Base o Super o Padre.
Diferentes formas de Inheritance:
Herencia única: cuando una clase secundaria hereda solo de una clase principal, se denomina herencia única.
Herencia múltiple: cuando una clase secundaria hereda de varias clases principales, se denomina herencia múltiple. A diferencia de Java y como C++, Python admite la herencia múltiple. Especificamos todas las clases principales como una lista separada por comas entre paréntesis.
2.2 Single Inheritance
In single inheritance, la clase derivada usa las características o miembros de la clase base única 
2.3 Multiple Inheritance
Multiple inheritance es aquella en la que la clase derivada adquiere dos o más clases base. En la herencia múltiple, la clase derivada puede usar las características conjuntas de las clases base heredadas. Sklearn usa herencia múltiple.

2.4 Private Variables and methods
Las variables privadas nos permiten especificar variables que no queremos que los usuarios o socios del proyecto cambien.
Las variables de instancia "privadas" son variables a las que no se puede acceder excepto desde dentro de un objeto. Sin embargo, no existe la existencia de variables “Privadas”. En python, la mayoría de los códigos y codificadores de Python siguen una convención, es decir, un nombre con el prefijo de un guión bajo, por ej. __diploma debe tratarse como una parte no pública de la API o cualquier código de Python, ya sea una función, un método o un miembro de datos.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [119], in <cell line: 1>()
----> 1 A.reg_var_OLS = new_funtion
AttributeError: 'RegClass' object attribute 'reg_var_OLS' is read-only
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [120], in <cell line: 1>()
----> 1 A.__X
AttributeError: 'RegClass' object has no attribute '__X'
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [121], in <cell line: 1>()
----> 1 A.__X = 8
AttributeError: 'RegClass' object has no attribute '__X'