这个问题已经有了答案:
以下内容不会引发:
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()
这是已知问题吗?我能做什么来修复它?我需要从看起来完全像列表的东西继承,并创建一个抽象继承器。谢谢您。
我认为这里的问题是你不应该直接继承 list . 有一些包装类可以在 collections . 在这种情况下 UserList :
list
collections
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]