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

本文探讨了Python3.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"}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值