python超类
1.超类
什么是超类:super方法调用的一系列类
什么时候用到超类?
如果子类需要复用父类的代码(属性,方法)时,需要通过超类实现
class A:
class_name="A" #类的属性
def __init__(self,name,age):
self.name=name #实例属性
self.age=age #实例属性
def show_me(self):
print(f"hello,我的name是{self.name},我的年龄是{self.age}")
a=A("王舞",18)
a.show_me()
class B(A): #继承实现扩展
class_name = "B"
def __init__(self,country,*args,**kwargs):
self.country=country
super().__init__(*args, **kwargs) # 通过超类,实现对父类代码的复用
super是不是代表父类?
super()是一个内置函数,返回了超类
沿着继承关系,从祖上一系列类中,寻找成员
super不是代表父类
super能不能跳过父类?
super 可以接受参数:
从哪个类的祖先中查找成员
传递实例对象
class A:
class_name="A" #类的属性
def __init__(self,name,age):
self.name=name #实例属性
self.age=age #实例属性
def show_me(self):
print(f"hello,我的name是{self.name},我的年龄是{self.age}")
a=A("王舞",18)
a.show_me()
class B(A): #继承实现扩展
class_name = "B"
def __init__(self,country,*args,**kwargs):
self.country=country
super().__init__(*args, **kwargs) # 通过超类,实现对父类代码的复用
class C(B):
class_name="C"
def show_class_name(self):
print("自己的class_name属性",self.class_name)
print("继承来的class_name属性",super().class_name) #超类的class_name
print("跳过父类后的class_name属性",super(B,self).class_name)
super(B,self).show_me()
b=B(country='china',name="张三",age=19)
b.show_me()
c=C(country='china',name="李四",age=20)
c.show_class_name()
如何知道类和类的继承关系:print(类名.__mro__)
print(C.__mro__) #(<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
浙公网安备 33010602011771号