我很清楚可以在 python 中动态声明类,type
并在这里和那里使用它。但是我仍然不清楚这两个功能之间有什么区别。
def class_factory():
def init(self, attr):
self.attr = attr
class_ = type('DynamicClass', (), {'__init__' : init})
return class_
和
def class_factory():
class DynamicClass:
def __init__(self, attr):
self.attr = attr
return DynamicClass
我已经看到在很多代码库(如 django)中使用了第一种模式,但到目前为止从未见过第二种模式。我仍然发现第二个更清楚,语法上。
我正在努力寻找关于人们为什么使用first pattern
声明动态类而不是动态类的正确解释second
。我对这两个函数都进行了试验,但在从这两个函数获得的类之间没有发现任何显着差异。我希望从它们不同的任何方面(性能方面或任何其他方面)清楚地解释上述两种模式/语法之间的差异。
谢谢,