Python类变量和成员变量
来源:互联网 发布:淘宝信誉查询网站 编辑:程序博客网 时间:2024/05/16 08:32
先上一段代码
class Test(): x_num = 4 num = 1 y = 5 def __init__(self, num): self.num = num def change(self,num): Test.num = num Test.x_num = 21 def test(self): self.x = 12 self.y = 15a = Test(2)print 'Test.num =', Test.num , '这里指定了是类的成员'print 'Test.x_num =', Test.x_num , '这里指定了是类的成员'print 'a.num =' , a.num , '对象中有num成员'print 'a.x_num =', a.x_num , '对象中没有x_num成员,但是类成员中有x_num'print 'a.y =', a.ytry: print a.x except: print 'no attribute named x', '对象和类都没有x(这个时候test还没执行,所以对象里没有x),所以报错了'a.test() print 'test(),self.x = 12 -> a.x =', a.x, '非构造函数可以任意声明对象的成员'print 'test(),self.y = 15 -> a.y =', a.y, '非构造函数可以任意声明对象的成员'Test.x_num = 100print 'Test.x_num=100 -> a.x_num =', a.x_num, '对于已创建的对象也会改'a.change(6) print 'a.change(6), Test.num=6 -> Test.num =', Test.num, '因为change中使用了Test.num,所以类中所有值都变了'print 'a.change(6), Test.x_num=21 -> a.x_num =', a.x_num, '即使a已经创建了,改了Test.x_num, a的x_num是会变的'a.x_num = 10 print 'a.x_num=10 -> Test.x_num =',Test.x_num, '这里是直接调用的,相当于只改了当前对象的类成员值,其他的类成员值不会改'print 'a.x_num=10 -> Test().x_num = ', Test(123).x_num
通过上述例子能够得到:
对于对象引用的变量(line17、18)
- 如果init中有声明(line6),那么a.num是成员变量(line17)
- 如果init中没有这个声明(line18),类成员中有这个声明,则获取到类成员(line2、18,line4、19)
- 如果init中没有这个声明(line21),成员函数里有声明(line11),但是该成员函数还没有执行(line10、24),那么Python会提示实例中找不到属性(line20-23)
- 如果该成员函数已经执行,则会直接得到成员变量(line24、25),由于line24执行了test成员函数之后成员变量中已经有了y,所以在line26得到的成员函数,而不是line19中得到的类成员
对于类变量的引用(line2-4,8、9、15、16、27-34)
- 引用时需使用类名(line2、15,line3、16)
- 使用类名引用并更改类成员值后(line8、9、27、29),所有该类的对象引用该类成员时值都变为新的值(line28、30、31)
- 如果使用对象引用类成员并更改类成员值,不对其他类的对象或类成员直接引用造成影响(line32-34)
运行结果如下:
Test.num = 1 这里指定了是类的成员Test.x_num = 4 这里指定了是类的成员a.num = 2 对象中有num成员a.x_num = 4 对象中没有x_num成员,但是类成员中有x_numa.y = 5no attribute named x 对象和类都没有x(这个时候test还没执行,所以对象里没有x),所以报错了test(),self.x = 12 -> a.x = 12 非构造函数可以任意声明对象的成员test(),self.y = 15 -> a.y = 15 非构造函数可以任意声明对象的成员Test.x_num=100 -> a.x_num = 100 对于已创建的对象也会改a.change(6), Test.num=6 -> Test.num = 6 因为change中使用了Test.num,所以类中所有值都变了a.change(6), Test.x_num=21 -> a.x_num = 21 即使a已经创建了,改了Test.x_num, a的x_num是会变的a.x_num=10 -> Test.x_num = 21 这里是直接调用的,相当于只改了当前对象的类成员值,其他的类成员值不会改a.x_num=10 -> Test().x_num = 21
阅读全文
0 0
- python的类变量和成员变量
- Python中的类变量和成员变量
- Python中的类变量和成员变量
- Python中的类变量和成员变量
- python的类变量和成员变量
- Python类变量和成员变量
- Python的类变量和成员变量以及局部变量
- python类成员变量和实例成员变量
- python 类成员变量
- python的类变量和成员变量用法
- python的类变量和成员变量用法实例教程
- python中的类变量、成员变量和成员函数的局部变量使用
- 类和成员变量
- Python类变量与成员变量
- Python的静态成员变量和非静态成员变量
- 类的成员变量和实例变量
- 类-成员变量和局部变量
- 成员变量和类变量的区别
- mongodb 内嵌数组关于排序的问题
- Android运行时权限方案全解析
- etl kettle 执行日志输出到数据库
- qt线程中使用互斥锁
- 协方差矩阵
- Python类变量和成员变量
- Redis 和 Memcached 各有什么优缺点,主要的应用场景是什么样的?
- 调试和运行matlab代码(源程序)的技巧和教程
- ASP.NET——验证控件
- 系统间通信方式之(Kafka的集群方案介绍1)(二十)
- 名字和地址转换
- HTML颜色代码表
- h5循环结构,嵌套
- 数据库地区表设计的思考