为什么类创建抛出

2024-06-16 14:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

只是在教室里玩

def func(*args, **kwargs):
    print args, kwargs

class Klass(func): pass

它抛出错误

TypeError: Error when calling the metaclass bases function() argument 1 must be code, not str

这是什么意思,我什么地方都不通过str? 为什么我不应该在课堂上说“是”而不是“传错”?在


Tags: def错误argserrorpasskwargsclassfunc
1条回答
网友
1楼 · 发布于 2024-06-16 14:19:23

看这里的原因,神秘的味精

http://bugs.python.org/issue6829

问题Error when calling the metaclass bases: function() argument 1 must be code, not str有相同的问题。在

编辑:到处玩

尽管您可以使用元类以扭曲的方式工作;)

def func(name, klassDict):
    return type(name, (), klassDict)

class MyMeta(type):
    def __new__(self, name, bases, klassDict):
        return bases[0](name, klassDict)

class Klass(func):
    __metaclass__ = MyMeta

print Klass

相关问题 更多 >