最近看一些pytorch一些大佬写的代码太规范,一个类中套一个类,只会简单语法的小白表示一头雾水,自己编了一个小代码验证一下,不喜勿扰。
code
classgrandfather():#超类def__init__(self,name,age):
self.name= name#爷爷的属性
self.age= age
self.height=180#爷爷特有的属性defplan(self):print("爷爷的计划是环游世界")defhobby(self):print("爷爷最喜欢浪遏飞舟")classfather(grandfather):#父类def__init__(self,name,age):super().__init__(name,age)#super主要用于集成父类的方法,就是他的上一辈
self.name= name
self.age= agedefdiet(self):print("父亲最喜欢小鸡炖蘑菇")defhobby(self):print("父亲最喜欢大美女")defamazing(self):super().plan()#super其实就相当于一个类,代表的父辈,可以直接用它调用父辈的函数classson(father):#子类def__init__(self,name,age):super().__init__(name,age)#super方法一般写在类的初始化__init__()的下面,当你实例化son时,他的父类的方法自然而然的继承了进来
self.name= name
self.age= agedefgame(self):print("儿子最喜欢和平精英")
zhen1= son("xiao_min",20)print(zhen1.name)#xiao_min //测试儿子的属性
zhen1.game()#儿子最喜欢和平精英 // 测试儿子特有的方法
zhen1.hobby()#父亲最喜欢大美女 //测试儿子继承他父类的方法
zhen1.diet()#父亲最喜欢小鸡炖蘑菇 //测试儿子继承他父类的方法
zhen1.amazing()#爷爷的计划是环游世界 //儿子集成他父亲的amazing()方法,父亲又继承爷爷的plan()方法print(zhen1.height)#180 //测试儿子类是否可以继承爷爷类的特有属性:可以
zhen1.plan()#爷爷的计划是环游世界 //测试儿子类是否可以直接继承爷爷类的方法:可以
zhen2= father("da_ming",40)
zhen2.hobby()#父亲最喜欢大美女 //测试父亲与爷爷有相同爱好时怎么办?-------因为zhen2是父亲类,所以父亲类优先
zhen2.plan()#爷爷的计划是环游世界 // 测试当父亲类没有plan()方法时怎们办:程序会一直往年龄大的方向即爷爷类上找print(zhen2.height)# 180 //测试父亲类是否可以继承爷爷类的独有属性:身高------当然可以
zhen3= grandfather("lao_ming",90)#总之一句话,子类优先,子类没有是一直往年龄大的方向找,年龄大的也没就芭比Q了,不仅可以继承类方法,类属性同样可以继承