为什么类创建会报错
我只是随便玩玩这个类
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