我有一个类Foo
,包含一个类变量size
。
我想在第一次创建Foo
对象时计算大小,并对所有后续对象使用相同的大小,但不再计算大小。为了包含Foo
类中的所有内容,我想出了这段代码:
class Foo(object):
size = -1
def __init__(self,args):
if Foo.size < 0:
Foo.size = some_calculation(args)
在我的小测试中,它做了我想要的。但是,这被认为是好的做法吗?有没有更好的方法呢?
答案 0 :(得分:1)
这绝不是一个详尽的答案,但我想指出一些我在评论中无法轻易描述的内容。
正如评论中所说,你的方法没有错。 这取决于你想做什么。
让我指出,如果将来您最终定义了一个根据不同规则/初始值计算size
的子类,通过self.
引用它可能很有用(而不是通过班级名称来达到它
e.g。
>>> class A:
... size=1
... def printsize(self):
... print(self.size)
...
>>> class B(A):
... size=2
...
>>> a=B()
>>> a.printsize()
2