首页 > 其他 > 详细

20201222-1 类的继承2

时间:2020-12-22 22:09:44      阅读:38      评论:0      收藏:0      [点我收藏+]
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....

这就是对 构造函数 进行重构
父类的参数都要写一遍,因为用户调用时,不是调用父类,是在调用初始化构造函数
写完后,加入新增的属性,这时候就与父类无关了
注:没有高级方法,只可以这样写

 

20201222-1 类的继承2

原文:https://www.cnblogs.com/azxsdcv/p/14174816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!