2011-06-05 55 views
6

是否有任何文體禁忌或其他缺點通過分配類屬性來實現簡單的方法?例如。如下面的barbaz,而不是更多ushushang foo可以/應該通過賦值給屬性來實現Python方法嗎?

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

我發現自己被事物的明顯的經濟誘惑是這樣的:

__str__ = __repr__ = hello 

回答

8

我個人認爲,之類的東西

__str__ = __repr__ = hello 

都很好,但

bar = lambda self: self.hello() 

是邪惡的。你不能輕易給一個lambda一個文檔字符串,並且.func_name屬性將具有無意義的值<lambda>。第一行不會出現這些問題。

4

一般情況下,這是完全沒分配方法的其他名稱。但是,在很多情況下,hello應該首先是__str__(除非hello以某種定義的格式返回字符串)。

相關問題