Skip to Content
Python 技術手冊 第三版
book

Python 技術手冊 第三版

by lex Martelli, Anna Martelli Ravenscroft, Steve Holden
January 2018
Intermediate to advanced content levelIntermediate to advanced
856 pages
17h 17m
Chinese
GoTop Information, Inc.
Content preview from Python 技術手冊 第三版
140
|
4 章 物件導向的 Python
class A(object):
def met(self):
print('A.met')
class B(A):
def met(self):
print('B.met')
super(B,self).met()
class C(A):
def met(self):
print('C.met')
super(C,self).met()
class D(B,C):
def met(self):
print('D.met')
super(D,self).met()
v3 中,雖然 v2 的語法仍然可行(因此前面的程式碼片段可以順利運
作),但
super
的語意有經過強化,所以你可以將上面的每個
super
呼叫改
成不帶引數的
super()
現在,
D().met()
只會呼叫每個類別的
met
方法剛好一次。如果你養成永遠
都以
super
編寫超類別呼叫的習慣,那麼即使在複雜的繼承結構之下,你
的類別也能合作無礙。就算最後的繼承結構很簡單,也不會有什麼不良的
影響。
只有在各類別的同一個方法之特徵式(signatures)都不一樣且不相容的時
候,你才可能選用以未繫結方法語法來呼叫超類別方法的這種較粗略的做
法。這在許多方面都是令人不悅的情況,但如果你真的必須應付它,那麼
未繫結方法語法有的時候可能是最不險惡的了。多重繼承的正確使用本來
就阻礙重重,但即使是 OOP 最基本的特性,例如基礎類別和子類別實體之
間的多型(polymorphism),都會在你賦予超類別和子類別中同名方法不 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

測試驅動開發|使用 Python

測試驅動開發|使用 Python

Harry J.W. Percival
Linux 内核观测技术BPF

Linux 内核观测技术BPF

David Calavera, Lorenzo Fontana

Publisher Resources

ISBN: 9789864766819