Python中创建类属性

类是模板,而实例则是根据类创建的对象。

绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

定义类属性可以直接在 class 中定义:

class Person(object):
    address = 'Earth'
    def __init__(self, name):
        self.name = name

因为类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问:

print(Person.address)

结果为: Earth

对一个实例调用类的属性也是可以访问的,所有实例都可以访问到它所属的类的属性:

print(p1.address)
print(p1.name)
print(p2.address)
print(p2.name)

结果为:

Earth
Bob
Earth
Alice

由于Python是动态语言,类属性也是可以动态添加和修改的:

Person.address = 'China'
print(Person.address)
print(p1.address)
print(p2.address)

结果为:

China
China
China

任务:
给 Person 类添加一个类属性 count,每创建一个实例,count 属性就加 1,这样就可以统计出一共创建了多少个 Person 的实例。

class Person(object):
    count = 0
    def __init__(self, name):
        self.name = name
        Person.count = Person.count + 1

p1 = Person('Bob')
print(Person.count)

p2 = Person('Alice')
print(Person.count)

p3 = Person('Tim')
print(Person.count)

结果为:

1
2
3

大家加油!
学习链接: https://www.imooc.com/code/6175

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值