伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

20201221-1 类的继承1

来源:本站原创 浏览:115次 时间:2021-12-10
面向对象三大特性:封装继承# 动物包含所有的动物,动物又包含会飞的不会飞的,飞禽走兽等# 不同的动物都能吃喝拉撒睡# 大类已经包含吃喝拉撒,小类就不需要包含了多态class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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)    # 现在需要写一个子类,子类是男人# Man 需要继承父类# 继承后,里面什么也不写也没关系class Man(People):pass# 实例化m1 = Man()   --->TypeError: __init__() missing 2 required positional arguments: 'name' and 'age'需要传名字才可以,因为是继承了的
1-1class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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)    # 现在需要写一个子类,子类是男人# Man 需要继承父类# 继承后,里面什么也不写也没关系class Man(People):pass# 实例化m1 = Man("NiuHanYang",222)  # 调用m1.eat()--->NiuHanYang is eating...Man直接继承了父类的方法
1-2可以写一些自己的方法吗?class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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)    # 现在需要写一个子类,子类是男人# Man 需要继承父类# 继承后,里面什么也不写也没关系class Man(People):def piao(self):print("%s is piaoing.....20s......done."%self.name)m1 = Man("NiuHanYang",222)  m1.eat()m1.piao()--->NiuHanYang is eating...NiuHanYang is piaoing.....20s......done.
1-3-1可以重构父类方法吗?比如增加新功能class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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 piao(self):print("%s is piaoing.....20s......done."%self.name)def sleep(self):print("man is sleeping")m1 = Man("NiuHanYang",222)  m1.eat()m1.piao()m1.sleep()--->NiuHanYang is eating...NiuHanYang is piaoing.....20s......done.man is sleeping父类的没有执行,被覆盖了
1-3-2但是,这里想要的是增加新功能class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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 piao(self):print("%s is piaoing.....20s......done."%self.name)def sleep(self):        People.sleep(self)      print("man is sleeping")m1 = Man("NiuHanYang",222)  m1.eat()m1.piao()m1.sleep()--->NiuHanYang is eating...NiuHanYang is piaoing.....20s......done.NiuHanYang is sleeping...man is sleeping直接调用父类方法,然后将self自己传进去,父类方法就执行了这就等于重构了父类方法
1-4-1再写一个类class People:def __init__(self,name,age):        self.name = name    # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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 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)  m1.eat()m1.piao()m1.sleep()w1 = Woman("ChenRonghua",26)w1.get_birth()--->NiuHanYang is eating...NiuHanYang is piaoing.....20s......done.NiuHanYang is sleeping...man is sleepingChenRonghua is born a baby....
1-4-2Man 和 Woman 都 继承了 People既然都属于同一个父类,Woman 可以调用 Man 中的 piao 吗?class People:def __init__(self,name,age):        self.name = name  ����,Ǩ��  # 等号两边的 name 变量名可以不一致,比如 self.NAme = name; name 是(self,name,age)中的参数名,NAme 是赋的变量名self.age = agedef 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 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)  m1.eat()m1.piao()m1.sleep()w1 = Woman("ChenRonghua",26)w1.get_birth()w1.piao()--->AttributeError: 'Woman' object has no attribute 'piao'男女不同的地方,所以才弄出两个子类,所以 Woman 是不可以调用 Man 的就是因为有不同,所以才分别继承了父类

 

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net