演示类中:类属性和实例属性的定义使用和区别

程序

class Demo_Property:              #定义类
    class_name = "Demo_property"  #类属性

    def __init__ (self,x=0):
        self.x = x               #实例属性

    def class_info (self):           #输出信息的方法
        print("类变量值:",Demo_Property.class_name)
        print("实例变量的值:",self.x)

    def XXX (self,x):            #修改实例属性的方法
        self.x = x               #注意实例属性的引用方式

    def YYY (self,name):                #修改类属性的方法
        Demo_Property.class_name = name    #注意类属性的引用方式



A = Demo_Property()            #实例化类
B = Demo_Property()

print("初始化两个实例")
A.class_info()
B.class_info()

print("修改实例变量")
print("修改A实例变量")
A.XXX (5)
A.class_info()
B.class_info()
print("修改B实例变量")
B.XXX (10)
A.class_info()
B.class_info()


print("修改类变量")
print("修改A类变量")
A.YYY ("sun")
A.class_info()
B.class_info()
print("修改B类变量")
B.YYY ("flower")
A.class_info()
B.class_info()

运行结果

初始化两个实例
类变量值: Demo_property
实例变量的值: 0
类变量值: Demo_property
实例变量的值: 0

修改实例变量
修改A实例变量

类变量值: Demo_property
实例变量的值: 5
类变量值: Demo_property
实例变量的值: 0
修改B实例变量
类变量值: Demo_property
实例变量的值: 5
类变量值: Demo_property
实例变量的值: 10

修改类变量
修改A类变量

类变量值: sun
实例变量的值: 5
类变量值: sun
实例变量的值: 10
修改B类变量
类变量值: flower
实例变量的值: 5
类变量值: flower
实例变量的值: 10

总结

类属性是同一个类中所有实例共有的,在类体中独立定义,引用时要用“类名.类变量名”(中间一个.号)形式引用,如果某个实例对其修改,则影响这个类中所有实例
实例属性既使在同一个类中也是互不关联,互不影响。定义是使用“self.属性名”,调用时也使用它

参考:《21天学通python》

补充:子类调用父类的方法

.经典类的写法: 父类名称.init(self,参数1,参数2,…)

新式类的写法:super(子类,self).init(参数1,参数2,…)
调用未绑定的父类构造方法super函数

super函数比在父类中直接调用未绑定方法更直观,但是其最大的有点是如果子类继承了多个父类,它只需要使用一次super函数就可以。然而如果没有这个需求,直接使用A.init(self)更直观一些。

https://www.cnblogs.com/MUMO/p/5725890.html
https://www.jianshu.com/p/dfa189850651

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值