我有一个类Foo
,其中包含一个类变量size
。我想在第一次创建Foo
对象并将其用于所有后续对象时计算大小,但不要再次计算大小。为了将所有内容包含在Foo
类中,我想出了以下代码:
class Foo(object):
size = -1
def __init__(self,args):
if Foo.size < 0:
Foo.size = some_calculation(args)
在我的小测试中,它做到了我想要的。然而,这是否被认为是良好的实践?有更好的方法来完成吗?
Foo.size
是否可能计算出< 0
?如果是,你可能希望将其初始化为None
,并检查if Foo.size is None:
。 - MrAlexBaileyFoo.size
,而此时还没有初始化任何对象,从而导致AttributeError
。为了避免这个问题,可以使用try
块,或者在类定义的一部分中将Foo.size
初始化为None
或者0
。 - Rick