可以/应该通过赋值给属性来实现Python方法吗?

时间:2011-06-05 16:49:08

标签: python coding-style

通过赋予类属性来实现简单方法是否有任何风格禁忌或其他缺点?例如。如下barbaz,而不是foo

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

我发现自己被这样的事物的明显经济所诱惑:

__str__ = __repr__ = hello

2 个答案:

答案 0 :(得分:8)

就个人而言,我认为像

这样的事情
__str__ = __repr__ = hello

很好,但是

bar = lambda self: self.hello()

是邪恶的。您不能轻易地为lambda提供文档字符串,.func_name属性将具有无意义的值<lambda>。第一行不会出现这两个问题。

答案 1 :(得分:4)

通常,将方法分配给其他名称是完全正确的。但是,在许多情况下,hello首先应该是__str__(除非hello以定义的格式返回字符串)。