最近看一些pytorch一些大佬写的代码太规范,一个类中套一个类,只会简单语法的小白表示一头雾水,自己编了一个小代码验证一下,不喜勿扰。
class grandfather(): #超类
def __init__(self,name,age):
self.name = name #爷爷的属性
self.age = age
self.height = 180 #爷爷特有的属性
def plan(self):
print("爷爷的计划是环游世界")
def hobby(self):
print("爷爷最喜欢浪遏飞舟")
class father(grandfather): #父类
def __init__(self,name,age):
super().__init__(name,age) #super主要用于集成父类的方法,就是他的上一辈
self.name = name
self.age = age
def diet(self):
print("父亲最喜欢小鸡炖蘑菇")
def hobby(self):
print("父亲最喜欢大美女")
def amazing(self):
super().plan() #super其实就相当于一个类,代表的父辈,可以直接用它调用父辈的函数
class son(father): #子类
def __init__(self,name,age):
super().__init__(name,age) #super方法一般写在类的初始化__init__()的下面,当你实例化son时,他的父类的方法自然而然的继承了进来
self.name = name
self.age = age
def game(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了,不仅可以继承类方法,类属性同样可以继承