一、继承的定义
- 定义
#父类A
class A():
def str_info(self):
print("这是一个父类")
#子类B
class B(A):
pass
#创建对象
result = B()
result.str_info()
#这是一个父类
二、多继承
- 定义
#父类A
class A():
def str_info(self):
print("这是一个父类A")
#父类B
class B():
def str_info1(self):
print("这是一个父类B")
#子类C
class C(A, B):
pass
#创建对象
result = C()
result.str_info()#这是一个父类A
result.str_info1()#这是一个父类B
注意:子类会优先继承A。
二、子类重写父类同名方法和属性
#父类A
class A():
def str_info(self):
print("这是一个父类")
#子类B
class B(A):
#重写父类方法
def str_info(self):
print("子类重写父类方法")
#创建对象
result = B()
result.str_info()
#子类重写父类方法
三、mor顺序
- __mor__:看查看该类继承了哪些父类。
#父类A
class A():
def str_info(self):
print("这是一个父类")
#子类B
class B(A):
pass
result = B()
#查看
print(B.__mro__)
输出结果:
四、子类调用父类的同名方法和属性
#父类A
class A():
def __init__(self):
self.num=1
def str_info(self):
print(f"这是一个父类{self.num}")
#父类C
class C():
def __init__(self):
self.num=2
def str_info(self):
print(f'这是一个父类{self.num}')
#子类B
class B(A, C):
def __init__(self):
self.num = 3
#调用父类方法,但是为保证调用到的也是父类的属性,必须在调用方法前调用父亲的初始化
def getA(self):
A.__init__(self)
A.str_info(self)
def getC(self):
C.__init__(self)
C.str_info(self)
result = B()
result.getA()#这是一个父类1
result.getC()#这是一个父类2
五、多层继承
#父类A
class A():
def str_info(self):
print("这是一个父类A")
#父类B
class B():
def str_info1(self):
print("这是一个父类B")
#子类C
class C(A, B):
def str_info1(self):
print("这是一个父类B")
#孙类D
class D(C):
pass
#创建对象
result = D()
result.str_info()#这是一个父类A
result.str_info1()#这是一个父类B
六、super()调用父类方法
#父类A
class A():
def str_info1(self):
print("这是一个父类A")
#父类B
class B():
def str_info1(self):
print("这是一个父类B")
#子类C
class C(B, A):
def str_info1(self):
print("这是一个子类C")
def father(self):
super(C, self).str_info1()#写法一
super().str_info1()#写法二
#创建对象
result = C()
result.father()
super()调用父类的优先级是子类括号里父类的排列顺序。
七、私有权限
对象不能访问私有属性和私有方法。
- 定义
class A():
#私有属性
def __init__(self):
self.__money = 200000
#私有方法
def __str_info1(self):
print("这是一个父类A")
- 获取和修改
class A():
# 私有属性
def __init__(self):
self.__money = 200000
# 定义获取私有属性值的函数
def get_prv(self):
return self.__money
#定义修改私有属性值的函数
def set_prv(self, money):
self.__money = money
s1 = A()
s1.set_prv(5000)
print(s1.get_prv())