只是为了说明一下:
class newobj:
def __init__(self, val):
self.value = val
def mul2(self):
self.value = 2*self.value
有没有办法自动将方法newobj.mul2
转换为可以这样调用的函数mul2
:
o = newobj(5)
mul2(o)
新函数mul2
最好知道断言输入是newobj
的实例,但这不是强制性的。
答案 0 :(得分:3)
只需将绑定方法分配给变量:
o = newobj(5)
mul2 = o.mul2
你没有 来调用同一个表达式中的方法,可以只引用该属性。
演示:
>>> class newobj:
... def __init__(self, val):
... self.value = val
... def mul2(self):
... self.value = 2*self.value
...
>>> o = newobj(5)
>>> o.mul2
<bound method newobj.mul2 of <__main__.newobj instance at 0x1059d4440>>
>>> mul2 = o.mul2
>>> o.value
5
>>> mul2()
>>> o.value
10
>>> mul2()
>>> o.value
20
如果您需要通用&#39;功能&#39;在newobj
的实例上运行,只需引用类上的方法并每次手动传入实例:
mul2 = newobj.mul2
mul2(o)
演示:
>>> o = newobj(5)
>>> mul2 = newobj.mul2
>>> o.value
5
>>> mul2(o)
>>> o.value
10