繁体   English   中英

调用@classmethod抽象超类错误— Python

[英]Calling @classmethod of abstract super class error — Python

我正在尝试覆盖以下代码中所示的类方法,但出现以下错误

TypeError: must be type, not classobj

为什么会发生这种情况,我该如何解决?

   class A(object):
       @classmethod
       def test(cls, data):
         pass


    class B(A):
       @classmethod
       def test(cls, data):
         pass


    class C(B):
       @classmethod
       def test(cls, data):
         # do something to data
         return super(B, cls).test(data)

super是一个对象,而不是一个类。 由于test是明确的类方法,因此您需要使用super类(在这种情况下为“ A”)调用它。

尝试用return A.test(data)替换最后一行

super仅适用于新样式类(在2.x系列中这意味着从object继承),但是A是旧样式类。

要解决此问题,请将class A():替换为class A(object):

A是旧式类(它不继承自object ),但是super 只能与新式类一起使用。 只需解决A

class A(object):
    @classmethod
    def test(cls, data):
        pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM