Python: как обмениваться данными между экземплярами разных классов?
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.б, самость.с, самость.d от BigClassA до BigClassB?
Nb: эти 3 класса не могут быть унаследованы друг от друга, так как это не имеет смысла.
То, что я имею в виду, - это просто объединить все методы в супер большой класс. Но я не чувствую, что это правильный способ сделать это.
1 ответ:
Вы правы, в вашем случае наследование не имеет смысла. Но как насчет явной передачи объектов во время создания экземпляра? В этом было бы много смысла.
Что-то вроде:
Class BigClassA: def __init__(self): .. Class BigClassB: def __init__(self, objA): self.b = objA.b self.c = objA.c self.d = objA.d Class BigClassC: def __init__(self, objA, objB): self.b = objA.b # need value of b from BigClassA self.f = objB.f # need value of f from BigClassBПри создании экземпляра выполните следующие действия:
objA = BigClassA() .. objB = BigClassB(objA) .. objC = BigClassC(objA, objB)
Comments