类的集合定义为:
class A():
@staticmethod
def call():
print('a')
class C(type):
def __repr__(self):
return 'somename'
class B(A):
__metaclass__ = C
@staticmethod
def call():
print('b')
def boundcall(self):
print('bound')
运行时,报此错误:
TypeError: Error when calling the metaclass bases
a new-style class can't have only classic bases
我需要元类(我认为)在我的代码中具有 B 的已知字符串表示形式。这样做的原因不是重点,但它将对未来的更新有很大帮助。
因此,假设我需要 C 作为 B 的元类,而 B 将是 A 的子类,有人可以告诉我这里出了什么问题以及我如何改变我正在做的事情来消除错误吗?
问题是线
class A():
它应该是:
class A(object):
这样,您就可以使 A 成为一个新样式的类。空括号毫无意义,但我仍然在 stackoverflow 和任何地方看到它们。为什么,哦为什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)