
148
|
第 4 章 物件導向的 Python
然而,對於 Python 為了各種運算而隱含呼叫的特殊方法(如後面「特殊方
法」中所述),這些專屬實體的繫結(per-instance bindings)並不會如你可
能預期的那樣運作。這種特殊方法的隱含使用(implicit uses)永遠都仰賴
特殊方法的類別層級繫結(如果有的話)。舉例來說:
def fake_get_item(idx): return idx
class MyClass(object): pass
n = MyClass()
n.__getitem__ = fake_get_item
print(n[23]) # 會產生:
# Traceback (most recent call last):
# File "<stdin>", line 1, in ?
# TypeError: unindexable object
繼承自內建型別
一個類別可以繼承自一個內建型別(built-in type)。然而,如果一個類別
想要直接或間接地擴充(extend)多個內建型別,那麼只有在那些型別經
過專門的設計,具有這種程度的相容性,你才能夠這樣做。Python 並不支
援未經限制地繼承多個任意的內建型別。一般來說,一個新式類別(new-
style class)最多只會擴充一個主要的內建型別,這表示除了
object
以外,
最多一個內建型別,前者是所有內建型別和類別的超類別,不會對多重繼
承(multiple inheritance)施加任何限制。舉例來說: ...