0

関数をスローする指定された名前に従って、その仕事が暗黙的にpythonクラスを生成する関数があります。その後、生成されたクラスにもフィールドとメソッドを暗黙的に作成したいと思います。どうすれば起動できるかわかりません。誰か助けてくれませんか...

4

2 に答える 2

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)
于 2013-01-10T08:48:52.100 に答える
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'>
于 2013-01-10T08:46:33.140 に答える