你好,我有一个模块安装在site packages文件夹中。该模块包含一个类,该类主要由类变量和静态方法组成(没有实例方法(,形式为
class C1:
name = 'C1'
todos = []
tasks = {}
@classmethod
def f1(cls) -> None:
pass
@staticmethod
def f2(cls) -> None:
pass
等等。类变量以及列表和dict都是在方法中操作的。现在我看到另一个类(比如C2
((也在站点包中(使用这个类C1
。现在C2
被用作其他类的基类。我的问题是:C1
中的这些类变量会被所有这些类实例共享吗?
我无法理解范围界定。有人能给我举个好榜样吗。
是的,这些值将在C1
实例之间共享,它们是类属性。您使用类名和属性来使用它们:
C1.name # "C1"
但是,您可以使用self
:覆盖单个实例的值
# Inside of a method
self.name = "A particular C1"
此外,当使用继承时,class属性仍然可以通过子类访问:
class Super:
name = "Super"
class Sub(Super):
pass
print(Super.name) # Super
print(Sub.name) # Super