以前に記述されたコードの一部を使用するためにtypeを使用してオブジェクトを生成しています
# Assume that myAppObjDict is already initialized.
myAppObj=type("myAppClass", (object,),myAppObjDict)
ここで、myValue()というメソッドを追加して、呼び出すことができるようにします。
value=myAppObj.myValue()
アプローチはどうあるべきですか?
以前に記述されたコードの一部を使用するためにtypeを使用してオブジェクトを生成しています
# Assume that myAppObjDict is already initialized.
myAppObj=type("myAppClass", (object,),myAppObjDict)
ここで、myValue()というメソッドを追加して、呼び出すことができるようにします。
value=myAppObj.myValue()
アプローチはどうあるべきですか?
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)
作成後にクラスに任意の関数を割り当てることができるはずです。
def method(self):
print self.__class__.__name__
def my_class (object):
pass
my_class.method = method
o = my_class()
o.method()
この割り当てはいつでも行うことができ、すべてのオブジェクトに新しいメソッドが追加され、既に作成されているものも含まれます。
結局のところ、Python は動的言語です :)