manipulando clases
inf200468 en ucf.edu.cu
inf200468 en ucf.edu.cu
Vie Jul 11 16:20:32 CEST 2008
gracias amigo
> El 2008/7/8 <inf200468 en ucf.edu.cu>
escribió:
>
>> sigo con algunas dudas con lo de la herencia,
si yo declaro la clase padre y
>> luego dentro de una funcion de la clase
hija necesito llamar a un metodo de la
>> clase padre , tengo que
instanciarla dentro del metodo o puedo llamar al metodo por su
>>
nombre___
>
> La clase hija "hereda" todos los atributos y
métodos del padre. A
> efectos prácticos, es como si los
métodos fueran de la clase hija.
>
>
>> otra duda es
que si todas las clases tienen que tener declarado un metodo
>> __init__ o
tienen uno por defecto
>
> No es obligatorio. Si lo hay, heredado o no,
se invocará al crear la
> instancia. Hay que tener cuidado para invocar
"explícitamente" los
> métodos __init__ de las clases
padre (mírate la documentación sobre el
> tema). Puede que
esté ahí tu confusión.
>
>
>> y la
otra es que si tengo que tener todas las
>> clases en un mismo script
>
> Puedes tener las definiciones donde quieras; la única
condición es que
> estén definidas antes de ser usadas. Puedes
referenciar una clase a
> través del nombre del módulo donde se
encuentre definida (eg: class
> C(mimodulo.miclase) )
>
>
>> les envio lo que he hecho para si pueden me digan si esta
>> bien
orientado , porque lo que es funcionar , funciona
>
> Algunos
comentarios sobre el código:
>
>> class Conexion:
>>
>> �� def __init__(self):
>> ������
self.dbname="dbservicios"
>> ������
self.user="postgres"
>> ������ self.host="127.0.0.1"
>> ������ self.password="pepe"
>
> La primera
pregunta sería ¿qué produce esta clase? Tu enfoque sigue
>
siendo demasiado "funcional", usas las instancias de Conexión como
si
> fueran biblioteca de funciones. Si tu clase crea "conexiones",
la
> instancia debería ser una conexión, almacenando toda la
información
> necesaria para ello, nunca se le tendría que pasar
ningún parámetro
> "conex" como haces en otros
métodos. Si quieres, añade un parámetro
> que indique si
está establecida la conexión o no, o cualquier otra
> forma que se
te ocurra como abrir y cerrar la conexión en cada
> consulta.
>
> Por otro lado, aunque no está mal colocar los parámetros de
conexión
> dentro del código, la idea que debería primar es
crear código
> "reutilizable". Harías bien en sacarlos
de la definición de clase,
> aunque, en realidad, ¿hace falta esta
clase para algo?
>
>>
>> �� def conectar(self):
>>
>> ������ try:
>>
>> ���������� conn =
>> psycopg2.connect("dbname=%s user=%s host=%s password=%s"%��
>> (self.dbname,self.user,self.host,self.password))
>>
>>
������ except:
>>
>> ���������� print "Error
>>
de conexion"
>>
>> ���������� sys.exit()
>>
>> ����� return conn
>
> Cuando se intercepta un error, es
porque se tiene la intención de
> recuperar la ejecución; de lo
contrario, es mejor dejar pasar la
> excepción para que se pueda
recuperar desde otro sitio. En este código
> estás considerando
que todas las excepciones son errores de conexión,
> lo que incluye todos
los "warnings" que no deberían cortar la
> ejecución.
>
>
>> ����������
>> Conexion.__init__(self)
#instanciando la clase conexion
>
> La "instanciación"
crea una instancia; aquí estás haciendo otra cosa:
> estás
enviando una instancia de "AnalizadoraAccessApache" para que se
>
"inicialize" con los atributos de "Conexion". Su lugar
debería ser en
> un método "__init__" de
"AnalizadoraAccessApache":
>
> def __init__(self):
> Conexion.__init__(self)
>
>
> Aquí
podrías añadir atributos propios de la clase
>
"AnalizadoraAccessApache". Si no existiera este método
"__init__", se
> heredaría de "Conexion", por lo que
no tienes que hacer nada especial
> si no vas a añadir más
atributos.
>
>
>
> Revisa de nuevo la
documentación, que todo ésto viene bastante bien explicado.
>
_______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ:
http://listas.aditel.org/faqpyes
--------------------------------
Servicio del Grupo de Redes
Universidad de Cienfuegos
Contacto: adminred en ucf.edu.cu
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es