我有一个函数,它的工作是根据传递抛出函数的给定名称隐式生成一个python类。之后我想为生成的类隐式创建字段和方法。我不知道怎么能开始它。有人可以帮忙......
答案 0 :(得分:3)
你真的需要上课吗?对于在运行时创建的“类型”,也许namedtuple可能是一个解决方案。
from collections import namedtuple
MyType= namedtuple("MyType", "field1 method1")
x = MyType(field1="3", method1=lambda x: x+1)
print x.field1, x.method1(3)
答案 1 :(得分:2)
你可以使用type()
尝试这样的事情:
def my_func(self):
return 'my_func to become my_method!'
def class_maker(name,**kwargs):
return type(name, (object,), kwargs)
A = class_maker('MyClass',my_method=my_func, field='this is my_field!')
inst = A()
print inst.my_method()
print inst.field
print inst
print A
输出:
my_func to become my_method!
this is my_field!
<__main__.MyClass object at 0x962902c>
<class '__main__.MyClass'>