1-1-1 Man 在初始化时 可以多传入一个属性吗? 可以在类 Man 下进行重构 class People: def __init__(self,name,age): self.name = name # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名 self.age = age def eat(self): print("%s is eating..."%self.name) def talk(self): print("%s is talking..."%self.name) def sleep(self): print("%s is sleeping..."%self.name) class Man(People): # def __init__ 这个动作相当于完全重构,会覆盖 # 这样用户实例化时,不会调用父类,将直接调用这里的 def __init__ # 这样需要重新写一遍参数 def __init__(self,name,age,money): People.__init__(self,name,age) # self.name 和 age 在父类中实现 self.money = money # 新增功能 money 在子类中实现 print("%s 一出生就有%s money"%(self.name,self.money)) def piao(self): print("%s is piaoing.....20s......done."%self.name) def sleep(self): People.sleep(self) print("man is sleeping") class Woman(People): def get_birth(self): print("%s is born a baby...."%self.name) m1 = Man("NiuHanYang",222,10) # 这样就需要 传入 money m1.eat() m1.piao() m1.sleep() w1 = Woman("ChenRonghua",26) w1.get_birth() ---> NiuHanYang 一出生就有 10 money NiuHanYang is eating... NiuHanYang is piaoing.....20s......done. NiuHanYang is sleeping... man is sleeping ChenRonghua is born a baby.... 这就是对 构造函数 进行重构 父类的参数都要写一遍,因为用户调用时,不是调用父类,是在调用初始化构造函数 写完后,加入新增的属性,这时候就与父类无关了 注:没有高级方法,只可以这样写
原文:https://www.cnblogs.com/azxsdcv/p/14174816.html