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 回答