Python 3.x 中类静态属性(成员变量)的用法

Python 3.x 的类声明中支持了静态属性与静态方法。对于实现“单例模型”是可以试试的。用过其他面向对象语言的应该不陌生。
代码

#Demo:Static Attr
class Manager():
	#静态属性,所有实例只有一个备份,用户实现--单例模型或者资源管理还是有些用处的
    data_set = {}
    access_count = 0
    def __init__(self,num):
        Manager.data_set['default']={
            'name':'init_name',
            'data':[num]
        }
        #成员属性可以与静态属性重名
        self.data_set = "I'm not a static one"
 	#成员方法也可以访问静态属性   
    def show(self):
        print("static:",Manager.getData())
        print("instance:",self.data_set)

    #静态方法只能访问静态属性
    @staticmethod
    def getData():
        Manager.access_count += 1
        return Manager.data_set


if __name__=="__main__":
    #可以直接访问
    print(Manager.data_set)
    #通过静态成员方法访问
    print(Manager.getData())

    #通过实例成员方法访问
    manager = Manager(5)
    Manager.data_set['new key']='a value'
    manager.show()

    #再看一眼静态属性
    print(Manager.getData())
    print("count:",Manager.access_count)
    #实例化的对象属性
    print(manager.__dict__)

输出结果如下:

{}
{}
static: {'default': {'name': 'init_name', 'data': [5]}, 'new key': 'a value'}
instance: I'm not a static one
{'default': {'name': 'init_name', 'data': [5]}, 'new key': 'a value'}
count: 3
{'data_set': "I'm not a static one"}

你可能感兴趣的:(Python3)