Python 3.7 : Inheriting list, 摘要被忽略

标签 python list abstract

<分区>

以下不引发:

from abc import ABCMeta, abstractmethod
class Test(list, metaclass=ABCMeta):
    @abstractmethod
    def test(self):
        pass
test = Test()

尽管这样做:

from abc import ABCMeta, abstractmethod
class Test(metaclass=ABCMeta):
    @abstractmethod
    def test(self):
        pass
test = Test()

这是一个已知问题吗?我能做些什么来修复它?我需要从看起来完全像列表的东西继承并创建一个抽象继承者。谢谢。

最佳答案

我认为这里的问题是你不应该直接继承listcollections 中有一些包装器类可以执行此操作。在这种情况下 UserList :

from abc import ABCMeta, abstractmethod
from collections import UserList
class Test(UserList, metaclass=ABCMeta):
    @abstractmethod
    def test(self):
        pass
test = Test()

这里有 live example来自:

class Test1(Test):
  def test(self):
    print("foo")

test = Test1()
test.append(10)
test.test()
print(test)

结果:

foo
[10]

关于Python 3.7 : Inheriting list, 摘要被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53559933/

相关文章:

Python:检查值属于哪个bin

python - 在 Flask shell 中运行 Flask 应用程序时出现 AttributeError

java - 如何克隆二维List?

python - 如何获取 numpy 数组中最大值的所有索引?

python - 如何在Python中将字符串日期列表转换为日期时间

python - 将像素值显示为图像

java - 检查对象数组是否包含具有相同属性的对象

通过通用父类访问子类中的 Java 静态成员

C# 自动转换接口(interface)方法

delphi - 如何强制后代类实现抽象函数?