为什么类创建会报错

2 投票
1 回答
2580 浏览
提问于 2025-04-15 19:33

我只是随便玩玩这个类

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

class Klass(func): pass

它报错了

类型错误:调用元类基础时出错 function() 的第一个参数必须是代码,而不是字符串

这是什么意思,我哪里都没有传字符串啊?而且我确实应该在基础中传递类,但为什么错误信息不直接说这个,而是这么难懂的错误呢?

1 个回答

2

这里可以看到这个神秘信息的原因

http://bugs.python.org/issue6829

这个问题 调用元类基类时出错:函数的第一个参数必须是代码,而不是字符串 也有同样的问题。

编辑:随便玩玩

虽然你可以用元类让它以一种奇怪的方式工作;)

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

撰写回答