python中类的实例及其子类共享状态

时间:2015-10-11 06:22:37

标签: python class inheritance attributes state

如何使派生类的一个实例在Python中与其基类的另一个实例共享属性和状态?

class Foo(object):
    def __init__(self, a, b):
        self.value = a

    def method1(self):
        self.value += 1
        return self.value

class Foo_child(Foo):
    def __init__(self, Foo_instance, c, d):
        super().__init__()

A = Foo(30,40)
B = Foo_child(A,50,60)

我需要的是改变B应该影响A的一些方法,反之亦然。

例如如果我致电B.method1,那么我需要A得到A.value 31,反之亦然。有没有明显的pythonic方法呢?

1 个答案:

答案 0 :(得分:2)

您的问题是包含( has-a )关系,而不是是-a 关系。从Foo_child(它们提供相同的功能)继承Foo也可能 ,但实际上您想要委托处理value和{ {1}}至method1

在[{1}}上重新实施Foo_instance以委托method1Foo_child上的Foo_instance应该是value对象,也可以代表:

Foo_child