如何解决Python 文档中“mixin 方法”的含义
python docs on collections.abc 有一个很好的汇总表(下图),其中有一列名为“混合方法”。我对这个专栏和上一个专栏之间的区别感到困惑。
是不是“抽象方法”可以定制,但“混合方法”有一个特定的实现,在给定类型的所有类中都是固定的?如果是这样,我在哪里可以找到这些 mixin 方法的内容?
非常感谢!
解决方法
抽象 方法是您应该自己实现的方法,如果您继承自这些类中的任何一个。例如:
class MyIter(collections.abc.Iterator):
# We must override __next__ because it's abstract in `Iterator`.
def __next__(self):
...
mixin 是一种方法,其实现已经在超类中提供。所以你不需要覆盖 __iter__
,因为 Iterator
已经实现了它。
继续 Iterator
示例:Iterator
类本身实现了 like this(稍微简化):
class Iterator(Iterable):
@abc.abstractmethod
def __next__(self):
pass
def __iter__(self):
return self
我们使用 abc.abstractmethod
表示 __next__
是抽象的;如果您忘记在具体实现类中覆盖它,装饰器将cause an exception to be raised。
另一方面,__iter__
方法的实现只是返回 self
,作为 expected from iterator objects。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。