Python类的继承
通过一段代码来验证子类默认继承父类所有属性和方法
class A(object):
def __init__(self):
self.num = 1
def info_print(self):
print(self.num)
# 子类
class B(A):
pass
result = B()
result.info_print() #1
B这个类确实继承到了A这个类
多继承问题:
# 1.定义父类
class A(object):
def __init__(self):
self.num = 1
def info_print(self):
print(self.num)
class C(object):
def __int__(self):
self.num = 2
def info_print(self):
print(self.num)
# 2. 定义子类,继承父类
class B(A, C):
pass
result = B()
result.info_print()
打印出的结果为1,这就证明,一个类继承多个父类时,默认使用第一个类的同名属性和方法
子类重写父类同名方法和属性
# 1.定义父类
class A(object):
def __init__(self):
self.num = 1
def info_print(self):
print(self.num)
class C(object):
def __int__(self):
self.num = 2
def info_print(self):
print(self.num)
# 2. 定义子类,继承父类
class B(A, C):
def __init__(self):
self.num = 3
def info_print(self):
print(self.num)
result = B()
result.info_print()
子类与父类具有同名属性和方法,默认使用子类的同名属性和方法
查看类的继承层级顺序
以上面代码为例,B继承了A类和C类
print(B.__mro__)
打印的结果为:(<class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>)
子类调用父类的同名方法和属性
class B(A, C):
def __init__(self):
self.num = 3
def info_print(self):
self.__init__()
print(self.num)
def print_A(self):
A.__init__(self)
A.info_print(self)
def print_C(self):
C.__init__(self)
C.info_print(self)
在子类中书写函数,注意调用父类A和B时,要记得调用响应的__init__方法,并且写上self来接收调用这个函数的对象。
多层继承
class B_junior(B):
pass
result = B()
result.info_print()
result.print_A()
result.print_C()
r_junior = B_junior()
r_junior.info_print()
r_junior.print_A()
r_junior.print_C()
令定义一个类来继承B类,然后用继承后的对象调用B类所有方法,结果是一样的,r_junior得到的结果和result一样
浙公网安备 33010602011771号