[問題] 關於override的繼承問題

作者: octantis (@.@)   2016-02-08 21:47:28
我看書看到一個類似如下的程式碼
class A():
def __next__(self):
return 3
def __iter__(self):
return self
class B():
pass
a = A()
b = B()
next(a)
next(b) #error
作者: bibo9901 (function(){})()   2016-02-08 23:13:00
...取同樣的名字不行嗎?
作者: uranusjr (←這人是超級笨蛋)   2016-02-08 23:59:00
Python 判斷是否 iterable 的根據是 dock-typing, 不是(打錯字, duck) 靠實際的繼承關係; 即使不繼承相關 abc只要有合適的 magic method 就可以達到大部分的效果abc 只是方便, 在功能上沒有任何作用
作者: os653   2016-02-09 02:12:00
印象中,括號沒寫父類別不一定會繼承object,最好還是寫吧
作者: octantis (@.@)   2016-02-09 02:24:00
我再去研讀一下duck-typing的相關資料
作者: Killercat (殺人貓™)   2016-02-14 11:19:00
ABC主要是給IDE方便看的,實際上無用
作者: uranusjr (←這人是超級笨蛋)   2016-02-14 18:22:00
不盡然, 它會檢查一些東西 ^^^^^^^^^^例如繼承 Mapping 卻沒實作 __getitem__ 會 runtime err

Links booklink

Contact Us: admin [ a t ] ucptt.com