【问题标题】:Possible to pass a function into a object's method as an argument, which can refer to that object?可以将函数作为参数传递给对象的方法,该参数可以引用该对象吗?
【发布时间】:2016-09-05 16:17:56
【问题描述】:
def my_func():
    stuff
    return something

my_object.my_method(my_func)

我希望 my_func 能够引用 my_object。本质上类似于 deferred self,意思是“无论我在哪个对象中,都参考那个”

【问题讨论】:

    标签: python python-2.7 functional-programming self function-object


    【解决方案1】:

    您可以使用 inspect 模块

    import inspect
    
    def my_func():
        stuff
        my_object = inspect.stack()[1][0].f_locals["self"]
        return something
    

    但是,我想更简单的方法是将实例作为参数传递,例如

    def my_func():
        stuff
        return something
    
    my_object.my_method(my_func, caller=my_object)
    

    【讨论】:

      【解决方案2】:

      你想创建一个callback。

      而here 是设计模式中回调的一种用法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 2015-04-20
        • 2015-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多