我有一个类Foo
,包含一个类变量size
。
我想在第一次创建 Foo
对象时计算大小,并为所有后续对象使用相同的大小,但不再计算大小。为了将所有内容都包含在 Foo
类中,我想出了以下代码:
class Foo(object):
size = -1
def __init__(self,args):
if Foo.size < 0:
Foo.size = some_calculation(args)
在我的小测试中,它做了我想要的。然而,这被认为是好的做法吗?有更好的方法吗?
最佳答案
这绝不是一个详尽的答案,但我想指出一些我无法在评论中轻易描述的内容。
如评论中所述,您的方法没有任何问题。 这取决于你想做什么。
我要指出的是,如果将来您最终定义了一个根据不同规则/初始值计算 size
的子类,那么通过 引用它可能会有用self.
(而不是通过类名访问它)
例如
>>> class A:
... size=1
... def printsize(self):
... print(self.size)
...
>>> class B(A):
... size=2
...
>>> a=B()
>>> a.printsize()
2
关于python - 更改类变量 : good practice or not? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35293474/