静态类成员python
Posted
技术标签:
【中文标题】静态类成员python【英文标题】:Static class members python 【发布时间】:2011-03-31 04:29:33 【问题描述】:所以我使用静态类成员,这样我就可以在类方法和同一类的静态方法之间共享数据(该类只有 1 个实例化)。我理解这很好,但我只是想知道静态成员什么时候被初始化?是进口的吗?关于第一次使用的类?因为我要从超过 1 个模块(因此超过 1 个 import 语句)中调用这个类的静态成员。访问静态方法的所有模块是否会共享相同的静态数据成员?如果我的主客户端删除了我的类的实例,然后重新创建它(没有完全终止或重新导入内容),我的数据成员会被保留吗?
【问题讨论】:
【参考方案1】:它们将在类定义时初始化,如果您将类作为模块的一部分导入,这将在导入时发生。这假设像这样的“静态”类成员定义样式:
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'
【讨论】:
是的,我意识到我不必实例化该类。但是类实例需要访问这些成员以及其他模块。我担心我正在从其他几个模块导入这个模块。这是否意味着所有模块的静态成员都被重置?还是每个导入它的模块都有自己的一组静态成员?以上是关于静态类成员python的主要内容,如果未能解决你的问题,请参考以下文章
Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数 区别(完全解析)