继承
- is a
- has a
has a
对象 与 其成员的 从属关系
学生类 借阅 了 一本书(书 属于 图书类)
那么 学生来 has a 图书类
即 一个类中使用了另一个类
is a
类之间的继承
例如:PC机 和 工作站 都继承计算机的共同属性
父类 基类(子类)
-
什么时候需要继承:
-
super class(父类)
python 没有重载 只有重写
- c++的重载
int func()
{ return 0 }
int func(int x)
{ return x}
// 根据传入参数的不同,执行不同的重载函数
def func():
return 0
def func(x):
return x
# python中第二个func会覆盖的第一个
多继承
- 一个 基类 继承 多个父类
class A(object):
def test(self):
print(' -- A')
class B(object):
def test(self):
print(' -- B')
class C(A, B):
def test0(self):
pass
c = C()
c.test()
import inspect
print(inspect.getmro(C)) # 返回搜索顺序,从左向右
print(C.__mro__)
# 经典类
class P1:
def foo(self):
print('p1-foo')
class P2:
def foo(self):
print('p2-foo')
def bar(self):
print('p2-bar')
class C1(P1, P2):
pass
class C2(P1, P2):
def bar(self):
print('c2-bar')
class D(C1, C2):
pass
print(D.__mro__)
class P1(object):
def foo(self):
print('p1-foo')
class P2(object):
def foo(self):
print('p2-foo')
def bar(self):
print('p2-bar')
class C1(P1, P2):
pass
class C2(P1, P2):
def bar(self):
print('c2-bar')
class D(C1, C2):
pass
print(D.__mro__)
- 关系图: