Python:Hack在不属于其类的对象上调用方法

Ram*_*hum 1 python methods class object

假设您定义了一个类,该类具有执行一些复杂处理的方法:

class A(object):
    def my_method(self):
        # Some complicated processing is done here
        return self
Run Code Online (Sandbox Code Playgroud)

现在你想完全在另一个类的某个对象上使用该方法.喜欢,你想做A.my_method(7).

这就是你得到的:TypeError: unbound method my_method() must be called with A instance as first argument (got int instance instead).

现在,有没有可能破解东西,所以你可以调用该方法7?我想避免移动函数或重写它.(请注意,该方法的逻辑依赖于self.)

一个注意事项:我知道有些人会想说,"你做错了!你在滥用Python!你不应该这样做!" 所以是的,我知道,这是我想做的可怕的糟糕事情.我问是否有人知道该怎么做,而不是如何告诉我我不应该这样做.

unu*_*tbu 6

当然我不建议在实际代码中执行此操作,但是,确实,您可以到达类内部并将其方法用作函数:

class A(object):
    def my_method(self):
        # Some complicated processing is done here
        return 'Hi'

print(A.__dict__['my_method'](7))
# Hi
Run Code Online (Sandbox Code Playgroud)