python - 更改类变量 : good practice or not? (Python)

标签 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)

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

最佳答案

这绝不是一个详尽的答案,但我想指出一些我无法在评论中轻易描述的内容。

如评论中所述,您的方法没有任何问题。 这取决于你想做什么。

我要指出的是,如果将来您最终定义了一个根据不同规则/初始值计算 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/

相关文章:

c++ - 对象列表中的变量不会改变

perl - 如何在 Perl 中使类的成员成为哈希?

python - 当类实例位于右侧时,如何让我的类控制加法操作?

python - 根据另一个查询集的长度对一个查询集进行排序

ios - 以非编程方式使用 (UIView) 类 - Swift

c# - 为什么我的 WeakReference 示例不起作用?

php - 如何使用扩展类的数据库连接错误 "Undefined variable: conn in ..."

python - 在 Python 程序中处理大量对象

python - NoSuchElementException : Message: Unable to locate element: [id ="j_username"] attempting WebdriverWait

python - Caffe:如何加载图像数据进行语义分割