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

程序

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》

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

父类又称 基类 超类

调用未绑定的父类构造方法super函数

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

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

发布了12 篇原创文章 · 获赞 1 · 访问量 477

猜你喜欢

转载自blog.csdn.net/weixin_45562000/article/details/104326319
今日推荐