Python 3.7: Inheriting list, abstract ignored
本问题已经有最佳答案,请猛点这里访问。
以下不引发:
1 2 3 4 5 6 | from abc import ABCMeta, abstractmethod class Test(list, metaclass=ABCMeta): @abstractmethod def test(self): pass test = Test() |
虽然这样:
1 2 3 4 5 6 | from abc import ABCMeta, abstractmethod class Test(metaclass=ABCMeta): @abstractmethod def test(self): pass test = Test() |
这是一个已知问题吗?我能做些什么来修复它?我需要从看起来完全像列表的东西继承并创建一个抽象继承者。谢谢。
我认为这里的问题是你不应该直接从
1 2 3 4 5 6 7 | from abc import ABCMeta, abstractmethod from collections import UserList class Test(UserList, metaclass=ABCMeta): @abstractmethod def test(self): pass test = Test() |
这里有来自
的实时示例
1 2 3 4 5 6 7 8 | class Test1(Test): def test(self): print("foo") test = Test1() test.append(10) test.test() print(test) |
结果:
1 2 | foo [10] |