holll

Páginas: 7 (1518 palabras) Publicado: 23 de septiembre de 2013
Python: Métodos especiales de clases
Está página este pensada para ser leida como una continuación al tutorial de Python de Guido Van Rossum, que puede obtenerse en http://www.python.org. y en esta misma web en la sección de El Bazar. Trata algunos conceptos algo más avanzados (aunque no por ello muy difíciles de entender) que nos permitirán aprovechar las características más avanzadas dellenguaje.
Nota: A lo largo de esta guía se utilizará el nombre "objeto" para referinos a una instancia de una clase que contiene el método que estemos tratando.
Las clases tienen una serie de métodos con un significado especial. Por ejemplo, ya conocemos el significado del método __init__() que se utiliza como constructor de clase, pero hay otros también muy interesantes. Vamos a verlos:Personalización Básica
__init__(self, args...)
Constructor del objeto. Si es una clase derivada, es importante llamar al método __init__ de la clase base dentro del __init__ de la clase derivada, para asegurar una inicialización adecuada.
__del__(self)
Es el destructor del objeto. Se le llama cuando la instancia va a ser borrada. De nuevo, si la clase base tiene un método __del__, el de la clasederivada debe llamarlo para asegurar una limpieza adecuada. No se garantiza que los métodos __del__() de todas las instancias de clase existentes puedan ser llamados en el momento en el que el interprete acabe.
del x no tiene porqué llamar automáticamente al destructor del objeto x. Lo que hace es decrementar la cuenta de referencias a x, y si esa cuenta llega a cero entonces si que se llama a__del__.
Dadas las circunstancias bajo las que se llama a __del__, dentro de este las excepciones son ignoradas (se imprime una advertencia en sys.stderr). Por ello __del__ debería realizar lo mínimo imprescindible en cuanto a la limpieza del objeto.
__repr__(self)
Método para convertir el objeto a una cadena, de modo que podamos llamar a la función interena repr() (comillas invertidas) sobreel objeto. Normalmente esta cadena tiene el aspecto de una expresión Python que podría utilizarse para recrear otro objeto con el mismo valor, o una cadena descriptiva en el caso de objetos complejos que podrían tener una representación muy complicada.
__str__(self)
Este método también debería devolver una representación en forma de cadena del objeto. Se le llama cuando imprimimos unainstancia del objeto con print o llamamos a la función interna str() sobre el mismo. A diferencia de __repr()__ la cadena resultante no necesita ser una expresión Python válida.
Ejemplo:
class prueba:

def __init__(self):
self.a = 0
def __inc__(self, cuanto = 1):
self.a = self.a + cuanto
def __str__(self):
return str(a)
p = prueba()
p.inc()
print p.a[devuelve 1]
print p
[devuelve 1]
__cmp__(self,otro) (¡actualizar!)
Este método es llamado por operaciones de comparación. Debe devolver un entero negativo si self < otro, cero si self == otro y un entero positivo si self > otro. Si no se ha definido __cmp__ los objetos son comparados por su identidad (su dirección de memoria).
__hash__(self)
Se utiliza para obtener la clave del objeto sies insertado en un diccionario, o se llama a la función interna hash() sobre él. Debe devolver un entero de 32 bits. Es importante que se cumpla que todos los objetos que se __comparan__ con igualdad devuelvan el mismo valor de __hash__. Si un objeto no define __cmp__ tampoco debería definir __hash__. Si define __cmp__ pero no __hash__, sus instancias no podrán utilizarse como claves endiccionarios. Si una clase define objetos mutables e implementa un método __cmp__ no debe implementar un __hash__ dado que las claves de los diccionarios deben de ser objetos inmutables.
__nonzero__(self)
Se utiliza para implementar la comprobación de certeza. Debe devolver 0 o 1 (falso o verdadero). Cuando este método no está definido, se utiliza __len__() si está definido. Si en una clase no están...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • hollla
  • hollla
  • holllo
  • hollla
  • Holll
  • holll
  • hollla
  • holll

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS