【发布时间】:2016-05-19 12:32:05
【问题描述】:
我有一个类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: -
类变量当然有它们的用途,特别是在所有实例之间共享数据的情况下......所以,是的,如果这符合您的要求并且适合用例,那很好。跨度>
-
请考虑,如果您以这种方式进行操作,有时您可能会在初始化任何对象之前在代码中的其他地方搜索
Foo.size,您将得到一个AttributeError。为避免此问题,请使用try块,或将Foo.size初始化为None或0作为类定义的一部分。 -
哎呀!没关系:看起来您正在初始化为-1。没注意到。
标签: python class oop class-variables