【发布时间】:2015-03-03 11:47:30
【问题描述】:
Class BigClassA:
def __init__(self):
self.a = 3
def foo(self):
self.b = self.foo1()
self.c = self.foo2()
self.d = self.foo3()
def foo1(self):
# do some work using other methods not listed here
def foo2(self):
# do some work using other methods not listed here
def foo3(self):
# do some work using other methods not listed here
Class BigClassB:
def __init__(self):
self.b = # need value of b from BigClassA
self.c = # need value of c from BigClassA
self.d = # need value of d from BigClassA
def foo(self):
self.f = self.bar()
def bar(self):
# do some work using other methods not listed here and the value of self.b, self.c, and self.d
Class BigClassC:
def __init__(self):
self.b = # need value of b from BigClassA
self.f = # need value of f from BigClassB
def foo(self):
self.g = self.baz()
def baz(self):
# do some work using other methods not listed here and the value of self.b and self.g
问题: 基本上我有 3 个有很多方法的类,从代码中可以看出它们有些依赖。如何将实例变量 self.b、self.c、self.d 的值从 BigClassA 共享到 BigClassB?
nb:这三个类不能相互继承,因为它没有意义。
我的想法,只是将所有方法组合成一个超级大类。但我觉得这不是正确的做法。
【问题讨论】:
-
class BigClassB(BigClassA):和class BigClassC(BigClassA, BigClassB)。使用继承 -
您可以尝试使用合成。那就是当您在 B 类的实例中实例化 A 类的对象时。这样您就拥有了连接,而无需说一个是另一个的特化。 Read here。除此之外,您可以发送 A 类的对象并将所需的属性分配给 B 类中的新属性。尽管这可能会破坏数据一致性。
-
您想共享每个类实例的数据还是全局共享数据?
-
每个实例不是全局的。
标签: python class instance-variables