在 Python 中将方法绑定到 class 实例
Binding a method to class instance on fly in 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 没有自动插入实例名称?
它可以像这样工作,因为函数并不是真正的实例方法
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()
您可以使用 monkey patching 将方法动态添加到 class。
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.func()
a = mc()
def myfunc(self):
print('instance function')
a.func = myfunc
a.show()
以上不起作用:TypeError: myfunc() missing 1 required positional argument: 'self'
。
考虑到我使用的是点符号,为什么 Python 没有自动插入实例名称?
它可以像这样工作,因为函数并不是真正的实例方法
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()
您可以使用 monkey patching 将方法动态添加到 class。
class mc:
def show(self):
self.func()
a = mc()
def myfunc(self):
print('instance function')
mc.func = myfunc
a.show()