深入理解Python中类属性和对象属性

6 篇文章 0 订阅
class A():
    count = 0

    def __init__(self):
        A.count += 1

    def exclaim(self):
        print("I'm an A!")

    @classmethod
    def kids(cls):
        print("A has", cls.count, "little objects.")


easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
print(easy_a.count)

输出:

A has 3 little objects.
3

类属性count记录了类A被实例化了多少次,相当于A这个“抽象类”的属性,而每一个实例都会得到这个count,所以easy_a.count的值也是3。

如果把count改为初始化时只修改实例的count值,那么A的count始终是0,而各个实例的count是1。

class A():
    count = 0

    def __init__(self):
        self.count += 1

    def exclaim(self):
        print("I'm an A!")

    @classmethod
    def kids(cls):
        print("A has", cls.count, "little objects.")


easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
print(easy_a.count)

输出:

A has 0 little objects.
1

参考资料:《Python语言及其应用》【美】卢巴诺维奇 著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值