2

以前に記述されたコードの一部を使用するためにtypeを使用してオブジェクトを生成しています

# Assume that myAppObjDict is already initialized.
myAppObj=type("myAppClass", (object,),myAppObjDict)

ここで、myValue()というメソッドを追加して、呼び出すことができるようにします。

value=myAppObj.myValue() 

アプローチはどうあるべきですか?

4

2 に答える 2

5

myAppObjDictクラスを作成する前に、メソッドを追加する必要があります。

def myValue(self, whatever):
    pass
myAppObjDict['myValue'] = myValue

# Assume that myAppObjDict is already initialized.
myAppObj=type("myAppClass", (object,),myAppObjDict)

または、メソッドを含む基本クラスを定義し、それを基本クラスのタプルに含めます。

class MyBase(object):
    def myValue(self): return 42

# Assume that myAppObjDict is already initialized.
myAppObj=type("myAppClass", (MyBase,),myAppObjDict)
于 2013-01-23T09:32:34.260 に答える
2

作成後にクラスに任意の関数を割り当てることができるはずです。

def method(self):
    print self.__class__.__name__


def my_class (object):
    pass


my_class.method = method

o = my_class()
o.method()

この割り当てはいつでも行うことができ、すべてのオブジェクトに新しいメソッドが追加され、既に作成されているものも含まれます。

結局のところ、Python は動的言語です :)

于 2013-01-23T09:46:53.490 に答える