- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 collections.MutableSequence 继承:
class myList(MutableSequence):
def __new__(cls,*kwargs):
obj=MutableSequence.__new__(cls,*kwargs)
return obj
我收到错误:
>>>a=myList()
>>>TypeError: Can't instantiate abstract class ContactMapList with abstract methods __delitem__, __getitem__, __len__, __setitem__, insert
当我以相同的方式直接从内置列表类派生我的类时,没有收到任何错误:
class myList(list):
def __new__(cls,*kwargs):
obj=list.__new__(cls,*kwargs)
return obj
我尝试寻找为 myList(MutableSequence) 定义构造函数的方法,但运气不佳:(
最佳答案
抽象基类是一个契约。这是任何从它派生的类都必须遵守的 promise 列表。
每个collections
类做出的 promise 列在the docs 中。 。例如,从 MutableSequence
继承的任何内容都将具有 __getitem__
、__setitem__
、__delitem__
等。
您无法实例化契约(Contract)!
<小时/>当您创建一个从抽象基类继承的类时,您不会继承这些方法。 (好吧......请参阅下面的注释。)您继承了一堆“抽象方法”,它们只是占位符。为了履行您通过继承 ABC 所做的 promise ,您必须为这些方法给出定义。他们可以做任何你想做的事,但他们必须在那里。
实际上,您继承的方法可以是真正的方法,您可以使用 super()
委托(delegate)给它们。这允许您指定默认行为。但这并不经常使用。
关于Python:如何为 MutableSequence 派生类定义 __new__ ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841054/
我很好奇,因为我找不到任何与此相关的信息,但是像下面这样的一段代码如何在 UML 类图中表示? 这只是继承吗?这些 Python 特殊方法/符号 __something__ 怎么样? from col
我正在尝试从 collections.MutableSequence 继承: class myList(MutableSequence): def __new__(cls,*kwargs):
我一直在阅读有关 typing.Sequence 和 typing.MutableSequence 的内容。两者都没有大量的“简单阅读”,一切都直接进入细节。 来自 this answer至 Can
我一直在阅读有关 typing.Sequence 和 typing.MutableSequence 的内容。两者都没有大量的“简单阅读”,一切都直接进入细节。 来自 this answer至 Can
根据 Alex Martelli 的指导使用 collections.MutableSequence 而不是子类化 list()(使用 Python 2.6.6) 亚历克斯建议使用 class Hos
我安装了 Smartsheet Python SDK,导入了 smartsheet 模块,但是当我想运行脚本时出现错误。该错误定位于 smartsheet 模块,并表示集合模块缺少可变序列。我已经尝试
我安装了 Smartsheet Python SDK,导入了 smartsheet 模块,但是当我想运行脚本时出现错误。该错误定位于 smartsheet 模块,并表示集合模块缺少可变序列。我已经尝试
我是一名优秀的程序员,十分优秀!