在类定义内部但不在方法内部声明的变量是类变量或静态变量:
>>> class MyClass:
... i = 3
...
>>> MyClass.i
3
As @米勒德夫 https://stackoverflow.com/questions/68645/static-class-variables-in-python#answer-69067指出,这创建了一个类级别i
变量,但这与任何实例级不同i
变量,所以你可以有
>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)
这与 C++ 和 Java 不同,但与 C# 没有太大不同,在 C# 中无法使用对实例的引用来访问静态成员。
See Python 教程中有关类和类对象的内容 https://docs.python.org/3/tutorial/classes.html#class-objects.
@Steve Johnson 已经回答了静态方法 http://web.archive.org/web/20090214211613/http://pyref.infogami.com/staticmethod,也记录在Python 库参考中的“内置函数” https://docs.python.org/3/library/functions.html#staticmethod.
class C:
@staticmethod
def f(arg1, arg2, ...): ...
@beidy推荐类方法 https://docs.python.org/3/library/functions.html#classmethods 优于 staticmethod,因为该方法随后接收类类型作为第一个参数。