我mro
在使用__metaclass__ = abc.ABCMeta
. __mro__
除了它返回一个列表而不是一个元组之外,它似乎相同。这是一个随机示例(ideone 片段):
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__
# (<class '__main__.Bacterium'>, <class '__main__.Life'>, <type 'object'>)
print wiggly.__class__.mro()
# [<class '__main__.Bacterium'>, <class '__main__.Life'>, <type 'object'>]
后来我发现这不是唯一的,ABCMeta
而是在所有新式类中都可用。
所以为什么?这不是做什么__mro__
?