Python类的特点
Posted morein2008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python类的特点相关的知识,希望对你有一定的参考价值。
测试代码:
1 #encoding:utf-8 2 class Parent(object): 3 x=1 #x是Parent类的属性(字段) 4 ls=[1,2] #ls是一个列表,也是Parent类的属性(字段) 5 6 class Child1(Parent): 7 y=2 8 9 class Child2(Parent): 10 pass 11 12 if __name__==‘__main__‘: 13 ‘‘‘对于类属性:子类与父类的关系是,如果子类重写了继承的值就用子类自己的属性值,否则就用父类的属性值‘‘‘ 14 print Parent.x,Child1.x,Child2.x 15 Child1.x=2 16 print Parent.x,Child1.x,Child2.x 17 Parent.x=3 18 print Parent.x,Child1.x,Child2.x 19 print ‘--------------------‘ 20 21 ‘‘‘类属性和实例属性的关系:‘‘‘ 22 ‘‘‘#1:若实例的属性值没有重新赋值,则类属性值的改变也会导致实例的属性值的改变。‘‘‘ 23 p=Parent() 24 print Parent.x,p.x 25 Parent.x=5 26 print Parent.x,p.x 27 print ‘--------------------‘ 28 29 ‘‘‘#2:对于不可变类型(数值型、bool型、字符串型等)的属性值,若实例的属性值已经重新赋值,则类的属性值与该实例的属性值相互独立,互不影响。‘‘‘ 30 p.x=11 31 print Parent.x,p.x 32 Parent.x=6 33 print Parent.x,p.x 34 print ‘--------------------‘ 35 36 ‘‘‘#3.对于可变类型(数值型、bool型、字符串型等)的属性值,实例的属性值和类的属性值,两者是是始终相关联的,实例属性值的改变会引起类属性值的改变,反之亦然。‘‘‘ 37 print Parent.ls,p.ls 38 p.ls.append(3) 39 print Parent.ls,p.ls 40 p2=Parent() 41 p2.ls.append(4) 42 print p.ls,p2.ls,Parent.ls 43 print ‘--------------------‘ 44 45 Parent.ls.append(9) 46 print Parent.ls,p.ls 47 print ‘--------------------‘ 48 49 ‘‘‘临时对不存在的实例属性进行赋值,是允许的,但只对该实例对象有效,对类及其他实例对象无效‘‘‘ 50 p3=Parent() 51 p.w=12 52 print p.w 53 print p3.w #有时报错,有时不报错,应该是编译器Python2.7.11的bug,正常应该报错 54 print Parent.w #报错 55 56 ‘‘‘临时对不存在的类属性进行赋值,也是允许的,并且会影响所有实例‘‘‘ 57 Parent.newField=10 58 print Parent.newField,p.newField,p2.newField,p3.newField#均为10 59
输出结果:(忽略第53、54行的错误的话)
1 1 1 1 2 1 3 2 3 -------------------- 3 3 5 5 -------------------- 5 11 6 11 -------------------- [1, 2] [1, 2] [1, 2, 3] [1, 2, 3] [1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 3, 4] -------------------- [1, 2, 3, 4, 9] [1, 2, 3, 4, 9] -------------------- 12 10 10 10 10
以上是关于Python类的特点的主要内容,如果未能解决你的问题,请参考以下文章