如何在Python中声明静态属性?
我如何在Python中声明静态属性?
这里写我如何声明一个方法:Python中的静态方法?
在Python中的类级别上定义的所有变量都被认为是静态的
class Example:
Variable = 2 # static variable
print Example.Variable # prints 2 (static variable)
# Access through an instance
instance = Example()
print instance.Variable # still 2 (ordinary variable)
# Change within an instance
instance.Variable = 3 #(ordinary variable)
print instance.Variable # 3 (ordinary variable)
print Example.Variable # 2 (static variable)
# Change through Class
Example.Variable = 5 #(static variable)
print instance.Variable # 3 (ordinary variable)
print Example.Variable # 5 (static variable)
你可以在同一个名字下有两个不同的变量(一个是静态的,一个是普通的)。 不要混淆。
所有在类中声明的变量都是'静态'属性。
class SomeClass:
# this is a class attribute
some_attr = 1
def __init__(self):
# this is an instance attribute
self.new_attr = 2
但请记住,'静态'部分是按照惯例,而不是强加的(关于这方面的更多细节,请阅读此SO线程)。
有关此公约及其含义的更多详细信息,请参阅官方文档的快速摘录:
除了从对象内部不能访问的“私有”实例变量,在Python中不存在。 但是,大多数Python代码都遵循一个约定:以下划线(例如_spam)作为前缀的名称应被视为API的非公开部分(无论它是函数,方法还是数据成员) 。 它应该被视为实施细节,如有更改,恕不另行通知。
由于类私有成员有一个有效的用例(即为了避免名称与名称由子类定义的名称冲突),所以对这种称为名称修改的机制的支持有限。 任何__spam形式的标识符(至少两个前导下划线,最多一个尾部下划线)在文本上用_classname__spam替换,其中classname是当前类名称,前导下划线被去除。 只要它在类的定义内发生,就不会考虑标识符的语法位置。
为了增加它,你可以在函数中使用静态变量,而不仅仅是类:
def some_fun():
some_fun.i += 1
print(some_fun.i)
some_fun.i = 0;
print(some_fun(), some_fun(), some_fun())
# prints: 1,2,3
链接地址: http://www.djcxy.com/p/55141.html