类继承和粘性属性

时间:2017-08-08 23:09:57

标签: python class inheritance attributes

某些python类继承会产生一些意想不到的后果,即" sticky"我希望重置的属性。

一个简化的场景,仍然展示了发生了什么:

class Foo(object):

    def __init__(self, headers={}):
        self.headers = headers

class Bar(Foo):

    def __init__(self, headers={}):
        super().__init__(headers=headers)

```

如果我实例化Bar的实例,我可以看到.headers为空。然后编辑bar.headers,看看它们已被修改。但是然后实例化Bar的另一个实例,并且意外地.headers仍然被修改:

In [39]: bar = Bar()

In [40]: bar.headers
Out[40]: {}

In [41]: bar.headers['baz'] = True

In [44]: goober = Bar()

In [45]: goober.headers
Out[45]: {'baz': True}

这种继承有更好的模式吗?否则,其他一切都能正常运行并且符合预期。

0 个答案:

没有答案