[问题] 关于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