我正在阅读关于元类的这篇有趣的文章什么是 Python 中的元类?. 接受的答案显示了如何使用具有以下签名的类型创建一个类。
type(类名,父类元组(继承用,可以为空),包含属性名和值的字典)
我尝试使用上面的签名创建“类型”类,令我惊讶的是我一开始就被允许创建一个!感谢您的意见!
type = type('type',(),{});
其次,在我使用上述语法创建类型类后,我无法做到
myclass = type('myclass',(),{});
和
type = type('type',(),{});
我有一个错误说
Traceback(最近一次调用最后一次):文件“”,第 1 行,类型错误:对象。new () 不带参数
但是,当我尝试以下操作时,我可以成功。
class myclass(object):
pass
我很困惑,因为根据我的理解,上面的代码片段应该调用 type 来尝试创建类“myclass”。发生什么了!?我错过了一些细节吗?