繼承
- 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__)
- 關係圖: