Python 3.7:继承列表,忽略抽象

以下不会引发:


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()

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


红颜莎娜
浏览 136回答 1
1回答

翻过高山走不出你

我认为这里的问题是你不应该直接从list. 有一些包装类可以在collections. 在这种情况下UserList:from abc import ABCMeta, abstractmethodfrom collections import UserListclass Test(UserList, metaclass=ABCMeta):    @abstractmethod    def test(self):        passtest = Test()在这里,你有活生生的例子来自:class Test1(Test):  def test(self):    print("foo")test = Test1()test.append(10)test.test()print(test)结果:foo[10]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python