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