2011-06-05 21 views
6

Sınıf özelliklerine atama yoluyla önemsiz yöntemleri uygulamak için herhangi bir stilistik tabu veya başka bir dezavantajı var mı? Örneğin. Daha çok foo'un aksine bar ve baz gibi.Python yöntemlerini özniteliklere atama yoluyla uygulayabilir miyim?

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

Kendimi bu gibi şeyler görünürdeki ekonomi tarafından cazip bulmak: Genel olarak

__str__ = __repr__ = hello 

cevap

8

Şahsen ben

__str__ = __repr__ = hello 

gibi şeyler gayet düşünüyorum, ama

bar = lambda self: self.hello() 

kötüdür. Bir lambda bir doktora kolayca veremezsiniz ve .func_name özniteliği <lambda> anlamsız değere sahip olur. Her iki problem de ilk satır için oluşmaz.

4

, diğer isimlere yöntemleri atama tamamen iyi. Ancak, birçok durumda, hello ilk etapta __str__ olmalıdır (hello tanımlı bir biçimde bir dize döndürmediği sürece).

İlgili konular