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 класса не могут быть унаследованы друг от друга, так как это не имеет смысла.



То, что я имею в виду, - это просто объединить все методы в супер большой класс. Но я не чувствую, что это правильный способ сделать это.
695   1  

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

    Ничего не найдено.