在Python中动态地将方法绑定到类实例


class mc:
def show(self):
self.func()

a = mc()
def myfunc(self):
print('instance function')
a.func = myfunc
a.show()

以上不起作用:TypeError: myfunc() missing 1 required positional argument: 'self'

考虑到我使用的是点表示法,为什么Python没有自动插入实例名称?

您可以使用monkey补丁将方法动态添加到类中。

class mc:
def show(self):
self.func()
a = mc()
def myfunc(self):
print('instance function')
mc.func = myfunc
a.show()

它可以这样工作,因为函数实际上不是一个实例方法

class mc:
def show(self):
self.x = 1
func(self)

a = mc()
def myfunc(self):
print (self.x)
print('instance function')
a.func = myfunc
a.show()

相关内容

  • 没有找到相关文章

最新更新