Python实例属性与类属性
来源:互联网 发布:js判断是否安装app 编辑:程序博客网 时间:2024/04/29 08:56
1.类属性为不变对象时的‘隐藏’效果
class Foo(object): version = 1.0f = Foo()print Foo.version # 1.0print f.version # 1.0Foo.version += 0.1print Foo.version # 1.1print f.version # 1.1f.version += 0.1print Foo.version # not be modified, 1.1print f.version # 1.2del f.versionprint Foo.version # 1.1print f.version # recover back, 1.1
类属性version,可以通过类名和实例名访问之,都得到1.0。此时,通过类名修改version,都得到1.1。而如果通过实例名修改属性,发现此时创建了一个新的实例属性,其值为1.2,而类属性依旧为1.1。最后删除实例属性,发现通过实例名调用再次得到类属性值1.1。
2.类属性为不变对象
class Foo(object): version = {'a':1}f = Foo()print Foo.version['a'] # 1print f.version['a'] # 1Foo.version['a'] = 2print Foo.version['a'] # 2print f.version['a'] # 2f.version['a'] = 3print Foo.version['a'] # be modified, 3print f.version['a'] # 3del f.version # raise exception here:AttributeError: 'Foo' object attribute 'version' is read-only
类属性可变的情况下,即使使用实例名修改属性值,此时它还是类属性。所以试图通过实例名删除时,会得到异常。
3.类属性持久性
当一个实例在类属性被修改后才创建,那么更新的值就将生效。类属性的修改会影响到所有的实例。
class Foo(object): version = 1.0f1 = Foo()print f1.version # 1.0Foo.version += 0.1print Foo.version # 1.1print f1.version # 1.1f2 = Foo()print f2.version # 1.1Foo.version += 0.1print f1.version # 1.2print f2.version # 1.2f1.version += 0.1f2.version += 0.2print Foo.version # 1.2print f1.version # 1.3print f2.version # 1.4Foo.version += 1print Foo.version # 2.2print f1.version # 1.3print f2.version # 1.4
最后两段代码演示了,当通过实例名修改属性,相当于此时创建了一个新的实例属性。所以其后再对类属性进行修改(使用类名修改属性值),将不会影响到实例属性。
0 0
- [Python]类属性与实例属性
- python 的 类属性 与 实例属性
- Python实例属性与类属性
- python中的类属性与实例属性
- Python类属性,实例属性
- python类的类属性与实例属性
- python中类属性与实例属性总结
- python中类属性与实例属性总结
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- 关于Python类属性与实例属性的讨论
- python学习——类属性与实例属性
- 类属性与实例属性
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python 实例属性和类属性
- poj 3468 线段树lazy
- linux mysql procedure创建
- Eclipse导出JavaDoc中文乱码问题解决
- kernel中efi变量初始化
- 微信小程序
- Python实例属性与类属性
- 服务开发基础知识
- android运行时权限
- C语言 循环队列
- 个推实例详解-java
- Linux 终端 Bash 常用快捷键介绍及经验
- python 使用ip库定位IP
- VMware三种网络模式
- sql 保留两位小数+四舍五入