【发布时间】:2014-06-09 20:01:19
【问题描述】:
作为下面的玩具示例,它们都创建了相同的类(尽管一个使用Foo.spam() 而另一个使用Foo.spam 来获取值)。我的问题是,选择一个而不是另一个的标准是什么?如果spam需要频繁访问,由于函数开销,最好使用第二类实现?还要别的吗?
class Foo(object):
def __init__(self, a):
self.a = "init"
@classmethod
def spam(cls, value=2):
return value + 1
Foo.spam() # -> 3
Foo.spam(3) #-> 4
class Foo(object):
spam = 3
def __init__(self, a):
self.a = "init"
Foo.spam #-> 3
Foo.spam = 4
Foo.spam #-> 4
【问题讨论】:
-
你能提供一个更清晰的用例吗?这两个示例都没有足够清楚地说明您想要实现的目标,特别是,在您传入
3后,这些示例在未来访问方面的行为非常不同。
标签: python