類別的繼承
- 14. • 如上定義就不能使用 Role 來建構物件了,否
則會發生 TypeError
• 若類別繼承了 Role 類別,沒有實作fight()
方法,在實例化時也會發生 TypeError:
- 19. Rich comparison 方法
• object 類別定義了__lt__()、
__le__()、__eq__()、__ne__()、
__gt__()、__ge__()
• 定義了物件之間使用<、<=、==、!=、>、
>=等比較時,應該要有的比較結果
- 22. • 實作 __eq__() 時通常也會實作
__hash__()
• __lt__() 與 __gt__() 互補,而
__le__() 與 __ge__() 互補
• 基本上只要定義 __gt__()、__ge__()
就可以
- 29. • 可以使用 for in 來迭代列舉:
• 繼承 Enum 或 IntEnum 類別定義列舉時,列
舉名稱不得重複,然而,列舉值可以重複。
- 46. 探討 super()
• 無引數 super()呼叫,是
super(__class__, <first
argument>) 的簡便方法
• 在一個綁定方法中,就相當於使用
super(__class__, self)
• 在 @classmethod 標註的方法中,就相
當於呼叫super(__class__, clz)。
- 49. • 呼叫 super(type, obj) 時,會使用
obj 的類別之 __mro__ 清單
• 從指定的 type 之下個類別開始查找,看
看是否有指定的方法
– 若有的話,將 obj 當作是呼叫方法的首引數
- 51. • 呼叫 super(type, type2) 時,會使
用 type2 的 __mro__ 清單
• 從指定的 type 之下個類別開始查找,看
看是否有指定的方法,若有的話,將
type2 當作是呼叫方法的第一個引數
- 57. • 慣例上,單行的 DocStrings 會是在一行中
使用 ''' 左右含括起來
• 函式或方法中的 DocStrings 若是多行字串,
''' 緊接的第一行,會是函式的簡短描述
• 之後空一行後,才是參數或其他相關說明,
最後換一行並縮排結束