将方法绑定到对象运行时后期绑定

尼莱什

我知道python中循环中的后期绑定,但是我找不到解决此问题的方法。

def bind_method(object, methods):

    for method in methods:
        def my_method():
            result = method()

            return result

        setattr(object, method.__name__, my_method)

def test():
    class A: pass

    def bar(): 
        return "BAR"

    def foo(): 
        return "FOO"

    a = A()
    bind_method(a, [bar, foo])

    assert a.foo() == "FOO"
    assert a.bar() == "BAR"


if __name__ == "__main__":
    test()

我尝试了partialinfunctools但没有成功:(

AKS

当调用a.bar() my_method被调用并且因为for循环已经结束时,methodfor的值methods列表中的最后一个元素,因此您总是得到"FOO"结果。

要检查,您可以添加打印对帐单:

def my_method():
    print(method.__name__) # this will always print `foo`
    result = method()

但是当我直接设置它时:

def bind_method(object, methods):
    for method in methods:
        setattr(object, method.__name__, method)

它确实起作用。


使用functools.partial

from functools import partial

def bind_method(object, methods):

    for method in methods:
        def my_method(a_method):
            print(a_method.__name__) # this print correct method name
            result = a_method()
            return result

        setattr(object, method.__name__, partial(my_method, method))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时将方法绑定到python中的对象?

来自分类Dev

Dotvvm 运行时绑定到“对象”类型

来自分类Dev

C#在运行时后期绑定卸载Dll

来自分类Dev

使用后期绑定而不是早期绑定时的字典运行时错误

来自分类Dev

纯虚函数是早期绑定(编译时)还是后期绑定(运行时)?

来自分类Dev

Silverlight运行时绑定到自定义依赖项对象

来自分类Dev

了解android文档:处理运行时片段“不应传递绑定到活动的对象”

来自分类Dev

使用泛型和后期绑定进行反射。如何在运行时投射?

来自分类Dev

什么是运行时绑定?

来自分类Dev

解决运行时缺少Java泛型的问题,将超类型绑定到子类实例

来自分类Dev

解决运行时缺少Java泛型的问题,将超类型绑定到子类实例

来自分类Dev

作为服务运行时将 MongoDB 绑定到 IP 地址

来自分类Dev

Angular2:将<select>组合框绑定到从ngOnInit()中的API检索到的对象列表时,运行时错误

来自分类Dev

在运行时将游戏对象绑定到Unity 3D中的另一个游戏对象

来自分类Dev

如何在MVC视图中使用jquery将数据绑定到组合框运行时?

来自分类Dev

在运行时将两个字段值绑定到一个xrlabel

来自分类Dev

在运行时更改Guice绑定

来自分类Dev

在运行时Ninject绑定

来自分类Dev

运行时的ObservableCollection数据绑定

来自分类Dev

在运行时绑定属性

来自分类Dev

Knockoutjs 在运行时更改绑定

来自分类Dev

PHP 运行时动态绑定变量

来自分类Dev

无法将事件绑定到对象方法

来自分类Dev

ASP.NET Gridview文本框在运行时绑定到变量

来自分类Dev

ASP.NET Core MVC - 在运行时绑定到模型

来自分类Dev

如何在运行时将Kendo Grid与System.Data.DataTable绑定

来自分类Dev

如何在运行时使用Seekbar拇指将按钮与文本绑定

来自分类Dev

在不更改对象类型的情况下将早期绑定转换为后期绑定

来自分类Dev

错误-运行时异常错误(可能绑定的牛刀)

Related 相关文章

  1. 1

    如何在运行时将方法绑定到python中的对象?

  2. 2

    Dotvvm 运行时绑定到“对象”类型

  3. 3

    C#在运行时后期绑定卸载Dll

  4. 4

    使用后期绑定而不是早期绑定时的字典运行时错误

  5. 5

    纯虚函数是早期绑定(编译时)还是后期绑定(运行时)?

  6. 6

    Silverlight运行时绑定到自定义依赖项对象

  7. 7

    了解android文档:处理运行时片段“不应传递绑定到活动的对象”

  8. 8

    使用泛型和后期绑定进行反射。如何在运行时投射?

  9. 9

    什么是运行时绑定?

  10. 10

    解决运行时缺少Java泛型的问题,将超类型绑定到子类实例

  11. 11

    解决运行时缺少Java泛型的问题,将超类型绑定到子类实例

  12. 12

    作为服务运行时将 MongoDB 绑定到 IP 地址

  13. 13

    Angular2:将<select>组合框绑定到从ngOnInit()中的API检索到的对象列表时,运行时错误

  14. 14

    在运行时将游戏对象绑定到Unity 3D中的另一个游戏对象

  15. 15

    如何在MVC视图中使用jquery将数据绑定到组合框运行时?

  16. 16

    在运行时将两个字段值绑定到一个xrlabel

  17. 17

    在运行时更改Guice绑定

  18. 18

    在运行时Ninject绑定

  19. 19

    运行时的ObservableCollection数据绑定

  20. 20

    在运行时绑定属性

  21. 21

    Knockoutjs 在运行时更改绑定

  22. 22

    PHP 运行时动态绑定变量

  23. 23

    无法将事件绑定到对象方法

  24. 24

    ASP.NET Gridview文本框在运行时绑定到变量

  25. 25

    ASP.NET Core MVC - 在运行时绑定到模型

  26. 26

    如何在运行时将Kendo Grid与System.Data.DataTable绑定

  27. 27

    如何在运行时使用Seekbar拇指将按钮与文本绑定

  28. 28

    在不更改对象类型的情况下将早期绑定转换为后期绑定

  29. 29

    错误-运行时异常错误(可能绑定的牛刀)

热门标签

归档