我正在使用一个接受类作为输入的ORM,我需要能够为它提供一些动态生成的类.目前,我正在做这样一个人为的例子:
def make_cls(_param):
def Cls(object):
param = _param
return Cls
A, B = map(make_cls, ['A', 'B'])
print A().foo
print B().foo
Run Code Online (Sandbox Code Playgroud)
虽然这样可以正常工作,但感觉有点偏差:例如,两个类都<class '__main__.Cls'>
在repl上打印.虽然名称问题不是什么大问题(我想我可以通过设置解决它__name__
),但我想知道是否还有其他我不知道的事情.所以我的问题是:有没有更好的方法来动态创建类或者我的示例已经很好了?
Rom*_*huk 10
什么是课?它只是一个例子type
.例如:
>>> A = type('A', (object,), {'s': 'i am a member', 'double_s': lambda self: self.s * 2})
>>> a = A()
>>> a
<__main__.A object at 0x01229F50>
>>> a.s
'i am a member'
>>> a.double_s()
'i am a memberi am a member'
Run Code Online (Sandbox Code Playgroud)
来自doc:
类型(名称,基数,字典)
返回一个新类型的对象.这实际上是类语句的动态形式.