python进阶13:创建类属性
来源:互联网 发布:mac怎么调节字体大小 编辑:程序博客网 时间:2024/05/16 09:59
1 创建类属性
绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实
例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独
立,而类属性有且只有一份。定义类属性可以直接在 class 中定义:
class Person(object): address = 'Earth' def __init__(self, name): self.name = name因为类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问。对一个实例调用类的属
性也是可以访问的,所有实例都可以访问到它所属的类的属性:
>>> print Person.addressEarth>>> p1 = Person('Bob')>>> p2 = Person('Alice')>>> print p1.addressEarth>>> print p2.addressEarth由于Python是动态语言,类属性也是可以动态添加和修改的:
>>> Person.address = 'China'>>> print p1.addressChina>>> print p2.addressChina因为类属性只有一份,所以,当Person类的address改变时,所有实例访问到的类属性都改变了。
2 类属性和实例属性冲突
先来看例子:
class Person(object): address = 'Earth' def __init__(self, name): self.name = namep1 = Person('Bob')p2 = Person('Alice')创建完后开始实验:
>>> print Person.addressEarth>>> p1.address = 'China'>>> print p1.addressChina>>> print Person.addressEarth>>> print p2.addressEarthp1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来
说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,所以:访问
p1.address 时,优先查找实例属性,返回'China'。访问 p2.address 时,p2没有实例属性address,但是有类属
性address,因此返回'Earth'。可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访
问。
当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了:
>>> del p1.address>>> print p1.addressEarth
0 0
- python进阶13:创建类属性
- python进阶11:创建类和实例
- python中创建类属性
- python中创建类属性
- python进阶学习笔记(五)——创建实例属性、初始化实例属性
- python进阶学习笔记(四)——python中访问限制、创建类属性、定义实例方法、定义类方法、类的继承
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- python 进阶之属性函数property
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- [Python进阶-3]面向对象,类,实例,属性,方法,类属性,类方法,内部属性
- python中创建实例属性
- Python进阶-类继承
- python类:class创建、数据方法属性及访问控制
- Java面试题之HashMap与HashTable
- 安卓复习之旅—View的工作流程2
- IOS开发的OC基础和UI基础的简介
- SpringBoot学习——静态文件存放位置设置
- 鸟哥的linux私房菜读书笔记10
- python进阶13:创建类属性
- php写的给出一个年份和月份输出该月的天数
- 概率论——Wasserstein距离
- 排序算法(冒泡、快速)
- 66-进程组(实验二)
- 懒人框架“ButterKnife”的使用
- (转)斐波那契算法 各个开发语言排名
- extjs4常用的layout浅析。
- 减肥最低原则,必须要守住