如何获取方法的父对象?

时间:2017-07-06 10:28:28

标签: python python-3.x

如果我通过了以下方法:

my_function(MyObject.method)

我可以从MyObject内部访问my_function,以便我可以致电MyObject.some_other_method()吗?

请分辨是否可以在类级别和实例级别执行此操作。

1 个答案:

答案 0 :(得分:0)

我绝对不会建议这样做但是经过一点点探索之后,你可以访问函数绑定的对象:

class C:
    def __init__(self, _id):
        self._id = _id
    def a(self):
        pass
    def b(self):
        print("b: {}".format(self._id))

c = C('test')


# you can access the object the function is bound to with __self__
c.a.__self__.b()

def my_function(fn):
    fn.__self__.b()


my_function(c.a)  #  "b: test"