Python 有没有办法将对象方法自动转换为外部函数?

Python 有没有办法将对象方法自动转换为外部函数?,python,Python,为了说明这一点,让我们采取以下行动: 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的实例,但这不是强制性的。只需将绑定方法

为了说明这一点,让我们采取以下行动:

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
的实例,但这不是强制性的。

只需将绑定方法分配给变量:

o = newobj(5)
mul2 = o.mul2
不必在同一表达式中调用方法,只需引用属性即可

演示:

演示:


只需将绑定方法指定给变量:

o = newobj(5)
mul2 = o.mul2
不必在同一表达式中调用方法,只需引用属性即可

演示:

演示:


newobj.mul2(o)
但它将与
o.mult2()
newobj.mul2(o)
相同,但它将与
o.mult2()
相同。OP想将其称为
mul2(o)
,那么这不是
mul2=newobj.mul2
?@tobias\k:我也在添加该选项的过程中:)@Martijn Pieters,
mul2=newobj.mul2
是我想要的,op想把它称为
mul2(o)
,那不是
mul2=newobj.mul2
?@tobias_k:我也在添加这个选项:-)@Martijn Pieters,
mul2=newobj.mul2
是我想要的
mul2 = newobj.mul2
mul2(o)
>>> o = newobj(5)
>>> mul2 = newobj.mul2
>>> o.value
5
>>> mul2(o)
>>> o.value
10