python 的 类属性 与 实例属性
来源:互联网 发布:电脑游戏大厅网络异常 编辑:程序博客网 时间:2024/04/29 10:35
python中类属性与其被定义的类绑定,和任何实例都无关。
对于类属性的访问,可以通过 类名+“.” + 属性名的方式来访问(如以下示例的Person.age);也可以通过类的实例+“.” + 属性名的方式(如以下示例最初使用的p.age),但此时需要有一定要求,那就是,该实例没有与类变量同名的变量,因为如果实例含有与类属性同名的属性,则用该实例访问属性时,访问的是实例中的属性。
而对类属性的值的修改,只能通过类名的访问加以实现。(此处存在一点例外,最后会加以说明)
以下通过一段实例代码加以说明:
>>> class Person():age =10>>> p = Person()>>> print Person.age , p.age10 10>>> Person.age +=1>>> print Person.age , p.age11 11>>> p.age += 1>>> print Person.age , p.age11 12
然而,当p.age += 1 之后,就意味着p这个实例具有了一个属性age,恰恰与Person类的属性age同名。这样,p.age则访问的是p的实例属性,而非Person类的属性。
进一步的,我们可以通过调用.__dict__,看一看。
>>> print Person.__dict__ ,p.__dict__{'__module__': '__main__', 'age': 11, '__doc__': None} {'age': 12}
>>> del p.age>>> print Person.age , p.age11 11>>> print Person.__dict__ ,p.__dict__{'__module__': '__main__', 'age': 11, '__doc__': None} {}
>>> class Person():age = {'zhousui':10}num = [1,2,3,4]>>> p = Person()>>> print Person.age['zhousui'] , p.age['zhousui']10 10>>> print Person.num[0] , p.num[0]1 1>>> Person.num[0] = 10>>> print Person.num[0] , p.num[0]10 10>>> p.num[0] = 20>>> print Person.num[0] , p.num[0]20 20>>> print Person.num[20, 2, 3, 4]
以上。
0 0
- python 的 类属性 与 实例属性
- python类的类属性与实例属性
- [Python]类属性与实例属性
- Python实例属性与类属性
- python中的类属性与实例属性
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- Python Class的实例属性/类属性
- Python类属性,实例属性
- python的类变量与实例变量以及__dict__属性
- python的类变量与实例变量以及__dict__属性
- 文件流对象open一个文件时会重置流状态吗??会?不会?
- [LeetCode] Reverse Words in a String
- CC2530通过串口向PC发送字符串
- BigNums 之 hdu 1316
- 开源GIS编译资料
- python 的 类属性 与 实例属性
- matlab中的length
- ubuntu11.04 vim quickfix窗口打开
- HDOJ4104 Discount
- GDB调试fork+exec创建的子进程的方法
- webService学习(二)
- 第六周作业1:闰年判断循环!
- 3DMAX 1快捷键及常用操作
- c语言之控制流