当我使用__metaclass__ = abc.ABCMeta时,我偶然发现了这个额外的,没有下划线的mro方法.它似乎与__mro__相同,只是它返回一个列表而不是一个元组.这是一个随机的例子(
ideone snippet):
import abc
import copy
class Life(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def reproduce(self):
pass
class Bacterium(Life):
def reproduce(self):
return copy.deepcopy(self)
wiggly = Bacterium()
print wiggly.__class__.__mro__
# (, , )
print wiggly.__class__.mro()
# [, , ]
后来我发现这不是ABCMeta独有的,但在所有新式课程中都可以使用.
所以为什么? __mro__不是这样做的?