如何将绑定方法添加到在python中幸存下来的对象中?

时间:2017-11-15 13:07:49

标签: python function object pickle

我正在尝试执行以下步骤:

  1. A类
  2. 创建对象foo
  3. 在运行时向对象foo 添加功能栏
  4. pickle 对象 foo (现在包含功能)
  5. 使用 pickle 加载对象 foo 并执行 foo.bar
  6. 功能

    直到第3步,一切顺利。第4步失败了。

    以下是我使用的代码:

    create.py

    import pickle
    class A():
        pass
    
    foo = A()
    
    def bar():
        print('hello')
    
    foo.bar = bar.__get__(foo)
    
    with open('test.pkl', 'wb') as f:
        pickle.dump(foo, f)
    

    运行foo.bar告诉我,该栏现在是A对象的绑定方法:

    foo.bar

    绑定方法栏< main 。对象位于0x000002014B8250F0>

    use.py

    import pickle
    f = open('test.pkl', 'rb')
    foo = pickle.load(f)
    foo.bar()
    

    执行use.py会导致以下错误消息: enter image description here

    任何想法,最好的方法是什么?我的目标很简单,就是拥有某种可存储的对象,可以从外部加载并允许访问foo,也可以使用exectue bar。因此,bar不一定必须是foo对象的一部分,我只是认为这将是一个整洁的方式。谢谢你的帮助!

0 个答案:

没有答案