改变类变量:好的练习与否? (蟒蛇)

时间:2016-02-09 13:36:09

标签: python class oop class-variables

我有一个类Foo,包含一个类变量size。 我想在第一次创建Foo对象时计算大小,并对所有后续对象使用相同的大小,但不再计算大小。为了包含Foo类中的所有内容,我想出了这段代码:

class Foo(object):
    size = -1
    def __init__(self,args):
        if Foo.size < 0:
            Foo.size = some_calculation(args)

在我的小测试中,它做了我想要的。但是,这被认为是好的做法吗?有没有更好的方法呢?

1 个答案:

答案 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