静态类成员python

Fal*_*rri 12 python static static-variables

所以我使用的是静态类成员,因此我可以在类方法和同一个类的静态方法之间共享数据(只有1个类的实例化).我理解这很好,但我只是想知道静态成员什么时候被初始化?它是进口的吗?在第一次使用课程?因为我将从多个模块调用此类的静态成员(因此多于1个import语句).访问静态方法的所有模块是否共享相同的静态数据成员?如果我的主客户端删除了我的类的实例,然后重新创建它(没有完全终止或重新导入东西),我的数据成员是否会被保留?

Tri*_*ych 14

它们将在类定义时初始化,如果您将类作为模块的一部分导入,则会在导入时进行初始化.这假设一个"静态"类成员定义样式如下:

class Foo:
    bar = 1

print Foo.bar # prints '1'
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个静态类成员,不需要实例化该类.

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'
Run Code Online (Sandbox Code Playgroud)