Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Denicin de Clases o
Denicin de una Clase o class Persona: def inicializarNombre(self, nombre): self.nombre = nombre def demeNombre(self): return self.nombre def saludar(self): print "Hola! Soy %s." % self.nombre
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Denicin de Clases o
Denicin de una Clase o >>> p1 = Persona() >>> p2 = Persona() >>> p1.inicializarNombre(Pedro) >>> p2.inicializarNombre(Juan) >>> p1.saludar() Hola! Soy Pedro. >>> p2.saludar() Hola! Soy Juan.
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Funciones y Mtodos e
Diferencia entre un Mtodo y una Funcin e o >>> class Clase: def metodo(self): print Tengo un self! >>> def funcion(): print "No tengo..."
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Espacio de Nombres de una Clase Todo el cdigo escrito en una clase se ejecuta en un espacio de o nombres especial: El espacio de nombres de la clase. Este espacio de nombres es accesible por todos los miembros de la clase.
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
>>> s = Reservado() >>> s.__inaccesible() Traceback (most recent call last): File "<pyshell#112>", line 1, in ? s.__inaccessible() AttributeError: Reservado instance has no attribute __inaccesib >>> s.accesible() El mensaje secreto es: Ud. no me puede ver ...
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Denicin de una Clase o Creacin de Instancias de una Clase o Funciones y Mtodos e El Espacio de Nombres de una Clase Denicin de Variables y Mtodos Privados o e
Atencin o Algunos lenguajes soportan diferentes grados de privacidad, por ejemplo Java tiene cuatro. Python no tiene esta clase de soporte de niveles de privacidad. No obstante los dobles/simples guiones bajos dan alguna posibilidad de tener dos niveles de privacidad.
class Filtro: def init(self): self.bloqueado = [] def filtro(self, secuencia): return [x for x in secuencia if x not in self.bloqueado] class FiltroDeSPAM(Filtro): def init(self): self.bloqueado = [SPAM]
>>> s = FiltroDeSPAM() >>> s.init() >>> s.filtro([SPAM, SPAM, SPAM, SPAM, huevos, panceta [huevos, panceta]
Investigando la Herencia
Para saber si una clase es una subclase de otra Ud. puede usar el mtodo: issubclass. e >>> issubclass(FiltroDeSPAM, Filtro) True >>> issubclass(Filtro, FiltroDeSPAM) False Para saber las clases bases de una clase espec ca Ud. puede hacer lo siguiente: >>> FiltroDeSPAM.__bases__ Para vericar si un objeto es una instancia de una clase Ud. puede usar: isinstance. >>> s = FiltroDeSPAM() >>> isinstance(s,FiltroDeSPAM ) True >>> isinstance(s, Filtro)
Universidad Nacional de San Luis Python: Soporte Orientado a Objetos
Herencia Mltiple u
class Calculadora: def calcular(self, expresion): self.valor = eval(expresion) class Hablar: def hablar(self): print Hola, mi valor es, self.valor
Herencia Mltiple u
Herencia Mltiple u
Algunas Consideraciones sobre la Herencia Mltiple u Si cada una de las super clases implementa un mtodo de formas e diferentes, entonces se debe tener cuidado respecto del orden de las superclases. Los mtodos de las clases que aparecen en primer e lugar sobre escriben a los mtodos de las restantes. e Si las super clases comparten superclases, el orden en el cual las superclases son visitadas mientras buscan un atributo o mtodo se e denomina: Orden de Resolucin de Mtodos (MRO, Method o e Resolution Order).
Constructores
class Filtro: def __init__(self): self.bloqueado = [] def filtro(self, secuencia): return [x for x in secuencia if x not in self.bloqueado] class FiltroDeSPAM(Filtro): def __init__(self): self.bloqueado = [SPAM]
Constructores
class Pajaro: def __init__(self): self.hambre = 1 def comer(self): if self.hambre: print Sip... self.hambre = 0 else: print No, gracias!
Constructores
class PajaroQueCanta(Pajaro): def __init__(self): self.sonido = Cucare picuare cue def cantar(self): print self.sonido >>> sb = PajaroQueCanta() >>> sb.cantar() Cucare picuare cue
Constructores
>>> sb.comer() Traceback (most recent call last): File "<stdin>", line 1, in ? File "pajaros.py", line 6, in eat if self.hungry: AttributeError: PajaroQueCanta instance has no attribute hambre
class PajaroQueCanta(Pajaro): def __init__(self): Pajaro.__init__(self) self.sonido = Cucare picuare cue! def cantar(self): print self.sonido
Polimorsmo
>>> from random import choice >>> x = choice([Hola, mundo!, [1, 2, e, e, 4]]) >>> x.count(e) 2
Polimorsmo
>>> 1+2 3 >>> Hola+ que tal Hola que tal
def add(x, y): return x+y >>> add(1, 2) 3 >>> add(Hola, que tal) Hola que tal
Polimorsmo
>>> 1+2 3 >>> Hola+ que tal Hola que tal
def add(x, y): return x+y >>> add(1, 2) 3 >>> add(Hola, que tal) Hola que tal
Polimorsmo