2011-06-05 12 views
6

¿Hay algún tabú estilístico u otro inconveniente en la implementación de métodos triviales por asignación a los atributos de clase? P.ej. como bar y baz a continuación, a diferencia de la más común foo.¿Puedo/debo implementar métodos de Python por asignación a atributos?

class MyClass(object): 
    def hello(self): 
     return 'hello' 
    def foo(self): 
     return self.hello() 
    bar = lambda self: self.hello() 
    baz = hello 

me encuentro tentado por la economía aparente de cosas como esta:

__str__ = __repr__ = hello 

Respuesta

8

personalmente, creo que cosas como

__str__ = __repr__ = hello 

están bien, pero

bar = lambda self: self.hello() 

es malo. No se puede dar fácilmente una lambda a docstring, y el atributo .func_name tendrá el valor sin sentido <lambda>. Ambos problemas no ocurren en la primera línea.

4

En general, es completamente bien para asignar métodos a otros nombres. Sin embargo, en muchos casos, hello debería haber sido __str__ en primer lugar (a menos que hello devuelva una cadena en un formato definido más o menos).

Cuestiones relacionadas