Skip to main content
 首页 » 编程设计

Python:黑客调用不属于其类的对象的方法

2025年05月04日14zhenyulu

假设你定义了一个类,它有一个方法来做一些复杂的处理:

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

现在您想完全在另一个类的某个对象上使用该方法。比如,您想执行 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!你不应该这样做!”所以是的,我知道,这是我想做的一件可怕的事情。我问的是是否有人知道如何去做,而不是如何向我宣扬我不应该这样做。

请您参考如下方法:

当然,我不建议在实际代码中这样做,但是,当然,您可以进入类内部并将其方法用作函数:

class A(object): 
    def my_method(self): 
        # Some complicated processing is done here 
        return 'Hi' 
 
print(A.__dict__['my_method'](7)) 
# Hi