小编mat*_*att的帖子

泡菜链接对象

我想挑选一个对象和第二个引用第一个对象的对象.当我天真地挑选/取消两个对象时,引用就变成了副本.如何保持两个对象之间的联系foobar.foo_ref

import pickle

class Foo(object):
    pass

foo = Foo()
bar = Foo()
bar.foo_ref = foo

with open('tmp.pkl', 'wb') as f:
    pickle.dump(foo, f)
    pickle.dump(bar, f)
with open('tmp.pkl', 'rb') as f:
    foo2 = pickle.load(f)
    bar2 = pickle.load(f)

print id(foo) == id(bar.foo_ref) # True
print id(foo2) == id(bar2.foo_ref) # False
# want id(foo2) == id(bar2.foo_ref)
Run Code Online (Sandbox Code Playgroud)

python pickle

11
推荐指数
1
解决办法
2072
查看次数

Mypy 方法定义与基类中的定义不兼容

我有一个做某事的父类和两个以正交方式包装方法的子类。当我尝试组合两个子类时,mypy 抱怨以下错误。

基类“Foo”中“run”的定义与基类“Bar”中的定义不兼容

这两个类如何“不兼容”以及如何修改我的代码以安抚 mypy?我可以不做就做吗

class Parent:
    def run(self, a, b):
        pass


class Foo(Parent):
    def run(self, a, b, foo=None, **kwargs):
        print('foo', foo)
        super().run(a, b, **kwargs)


class Bar(Parent):
    def run(self, a, b, bar=None, **kwargs):
        print('bar', bar)
        super().run(a, b, **kwargs)


class C(Foo, Bar):
    pass
Run Code Online (Sandbox Code Playgroud)

python python-3.x mypy python-typing

5
推荐指数
1
解决办法
631
查看次数

标签 统计

python ×2

mypy ×1

pickle ×1

python-3.x ×1

python-typing ×1