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

Instances of a class and its sub-class sharing state in python

如何使派生 class 的一个实例与其基础 class 在 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 才能得到 31 的 A.value,反之亦然。有什么明显的 pythonic 方法可以做到这一点吗?

你的问题是包含(has-a)关系,而不是is-a关系。使 Foo_child 继承自 Foo 可能 是必要的(它们提供相同的功能),但本质上你想委托处理 valuemethod1Foo_instance.

Foo_child 上重新实现 method1 以委托给 Foo_instancevalueFoo_child 上应该是一个 property 对象代表们:

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

    @property
    def value(self):
        return self.Foo_instance.value

    @value.setter
    def value(self, value):
        self.Foo_instance.value = value

    def method1(self):
        return self.Foo_instance.method1()