所以我使用静态类成员,所以我可以在类方法和同一类的静态方法之间共享数据(类的实例只有 1 个)。我理解这很好,但我只是想知道静态成员什么时候被初始化?是进口的吗?关于第一次使用的类?因为我要从超过 1 个模块(因此超过 1 个 import 语句)中调用这个类的静态成员。访问静态方法的所有模块是否会共享相同的静态数据成员?如果我的主客户端删除了我的类的实例,然后重新创建它(没有完全终止或重新导入东西),我的数据成员会被保留吗?
问问题
13153 次
1 回答
15
它们将在类定义时初始化,如果您将类作为模块的一部分导入,这将在导入时发生。这假设像这样的“静态”类成员定义样式:
class Foo:
bar = 1
print Foo.bar # prints '1'
请注意,这是一个静态类成员,无需实例化该类。
import 语句将只执行一次模块的内容,无论执行多少次或在何处执行。
是的,静态成员将由访问它们的任何代码共享。
是的,如果您删除类型为该类的对象,则将保留该类的静态成员:
# Create static member
class Foo:
bar = 1
# Create and destroy object of type Foo
foo = Foo()
del foo
# Check that static members survive
print Foo.bar # Still prints '1'
于 2010-08-17T19:31:49.263 回答