Python 仅使用方法'修改方法;的名称和实例对象

Python 仅使用方法'修改方法;的名称和实例对象,python,class,methods,instance,Python,Class,Methods,Instance,我知道使用getattr()可以调用该方法,但我需要覆盖它,因此myInstance.mymethod将被覆盖 我将方法的名称作为字符串和实例的引用。您可以使用setattr >>> class Foo(object): ... def method(self): pass ... >>> a = Foo() >>> a.method() >>> setattr(a,'method',1) >>>

我知道使用
getattr()
可以调用该方法,但我需要覆盖它,因此
myInstance.mymethod
将被覆盖


我将方法的名称作为字符串和实例的引用。

您可以使用
setattr

>>> class Foo(object):
...    def method(self): pass
... 
>>> a = Foo()
>>> a.method()
>>> setattr(a,'method',1)
>>> a.method()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
其中lambda只是定义函数的一种别致的简写:

def func(self):
    return self.__class__.__name__

setattr(a,'method',types.MethodType(func,a))

你想用什么替换它?另一个函数,还有什么?
def func(self):
    return self.__class__.__name__

setattr(a,'method',types.MethodType(func,a))