城乡建设杂志社官方网站,医院网站建设具体内容,做网站前期需要准备什么,品牌建设的具体内容继承
继承就是为了解决两个有大量重复性代码的类#xff0c;抽象出一个更抽象的类放公共代码#xff0c;主要是代码复用#xff0c;方便代码的管理与修改
类的继承包括属性和方法#xff0c;私有属性也可继承
class Person(): # 默认是继承object超类pass…继承
继承就是为了解决两个有大量重复性代码的类抽象出一个更抽象的类放公共代码主要是代码复用方便代码的管理与修改
类的继承包括属性和方法私有属性也可继承
class Person(): # 默认是继承object超类passclass Man(Person):passprint(Person.__bases__) # __bases__查询父类
print(Man.__bases__) # 继承Person
class Person():eat 吃饭def __init__(self):self.people 人def shuijiao(self):print(睡觉)class Man(Person):passprint(dir(Person))
print(dir(Man)) # 属性方法全部继承a Man()
print(dir(a))
class Person():def __init__(self, name):self.name nameclass Man(Person):passs Man(张三) # 父类初始化要传值子类也需要
print(s.name) # 张三
解决私有属性的调用
class Person():def __init__(self, age):self.__age agedef run(self):print(self.__age) # 这里可以调用私有属性class Man(Person):pass# def to(self):# print(self.__age) # 无法在子类调用私有属性s Man(18)
# s.to() # 无法直接调用父类的私有属性
print(dir(s)) # 但是私有属性也会被继承s.run() # 通过写一个方法来调用私有属性 继承顺序
按照继承顺序来首先是实例本身然后是实例的类然后是父类以此类推最后是object超类
class Person():def __init__(self, age):self.age ageclass Man(Person):passs Man(18)print(s.__class__.__mro__) # (class __main__.Man, class __main__.Person, class object)
print(Man.__mro__) # 跟以上一样 多继承
class Person():texp 直立行走def __init__(self, age):self.name 人self.age ageself.__sex 性别def run(self):print(人会跑)class Man(Person):a 父class Woman(Person):a 母class Son(Woman, Man): # 谁在前就先继承谁依据这里passprint(Son.__mro__)# (class __main__.Son, class __main__.Man, class __main__.Woman, class __main__.Person, class object)
继承的属性或方法与父类同名会怎么样
先继承谁的就依据谁的按照上面的这个代码的话那就是继承Woman的如果是需要调用到 “a” 那么就是输出 “母” 重构重写
class Person():def __init__(self, age):self.age ageclass Man(Person):a 父class Woman(Person):a 母class Son(Woman, Man):def __init__(self, name): # 父类子类同时初始化也是按照继承顺序来self.name names Son(张三)
print(s.name) # 初始化按照继承顺序来 定向继承
super指定继承需要有继承关联
super(): 是用于调用父类的一个方法遵循就近原则
是用来解决多重继承问题的直接用类名调用父类方法在使用单继承的时候没问题但是如果使用多继承会涉及到查找顺序mro、重复调用
class Person():def __init__(self, age):self.age agedef eat(self):print(吃饭)class Man(Person):a 父class Woman(Person):a 母class Son(Woman, Man):def run(self):super().eat()print(super().a)print(super(Woman, self).a)s Son(18)
s.run()# 吃饭
# 母
# 父