una programacion poo otra orientada objetos metodo llamar listas lista importar con como clases clase python oop empty-class

programacion - objeto de clase vacío python



poo python 3 (4)

Prueba con lambda :

john.greet = lambda : print( ''hello world!'' )

Lo que podrás hacer:

john.greet()

EDITAR : Gracias Thomas K por la nota: esto funciona en Python 3.2 y no en Python2, donde la print parece ser una statement . Pero esto funcionará para lambda s, sin declaraciones (¿verdad? Lo siento, solo sé que python3.2 ( python3.2

Estoy enseñando una clase de Python en Programación Orientada a Objetos y mientras estoy repasando cómo explicar las Clases, vi una definición de clase vacía:

class Employee: pass

el ejemplo continúa definiendo un nombre y otros atributos para un objeto de esta clase:

john = Employee() john.full_name = "john doe"

¡interesante!

Me pregunto si hay una forma de definir dinámicamente una función para una instancia de una clase como esta. algo como:

john.greet() = print ''hello world!''

esto no funciona en mi intérprete de Python, pero ¿hay alguna otra forma de hacerlo?


Puedes usar AttrDict

>>> from attrdict import AttrDict >>> my_object = AttrDict() >>> my_object.my_attribute = ''blah'' >>> print my_object.my_attribute blah >>>

Instalar attrdict desde PyPI:

pip install attrdict

También es útil en otras situaciones, como cuando se necesita acceso de atributos a las claves dict.


También puede usar "tuplas con nombre" del módulo estándar de la collection . Las tuplas con nombre funcionan como tuplas "ordinarias" pero los elementos tienen nombres y puede acceder a los elementos usando la "sintaxis de punto". De la colección documentos :

>>> # Basic example >>> Point = namedtuple(''Point'', [''x'', ''y'']) >>> p = Point(11, y=22) # instantiate with positional or keyword arguments >>> p[0] + p[1] # indexable like the plain tuple (11, 22) 33 >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) >>> p.x + p.y # fields also accessible by name 33 >>> p # readable __repr__ with a name=value style Point(x=11, y=22)


Una clase es más o menos un envoltorio elegante para un dict de atributos a objetos. Cuando crea una instancia de una clase, puede asignar sus atributos, que se almacenarán en foo.__dict__ ; Del mismo modo, puede buscar en foo.__dict__ para cualquier atributo que ya haya escrito.

Esto significa que puedes hacer algunas cosas dinámicas ordenadas como:

class Employee: pass def foo(self): pass Employee.foo = foo

así como asignar a una instancia particular. (EDITAR: parámetro self añadido)