因此,我正在使用静态类成员,因此我可以在同一类的类方法和静态方法之间共享数据(类只有1个实例化)。我理解这一点,但是我只是想知道静态成员何时初始化?是进口吗?关于班级的首次使用?因为我将从超过1个模块(因此超过1个导入语句)调用此类的静态成员。访问静态方法的所有模块是否会共享相同的静态数据成员?而且,如果我的主要客户端删除了我的课程的实例,然后重新创建它(不完全终止或重新导入的内容),我的数据成员是否会被保留?

有帮助吗?

解决方案

它们将在类别定义时间初始化,如果您将类作为模块的一部分导入,则会在导入时间进行。这假设像这样的“静态”类成员定义样式:

class Foo:
    bar = 1

print Foo.bar # prints '1'

请注意,这是静态类成员,无需实例化课程。

导入语句将精确执行一个模块的内容,无论执行多少次或执行了多少次。

是的,静态成员将通过访问它们的任何代码共享。

是的,如果您删除该类型的对象,则将保留类的静态成员:

# 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'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top