Вот очень короткий пример того, что я имею в виду.Переменные класса обмена
class class1():
def method1(self):
self.variable1 = 5
class class2():
def method2(self):
self.variable2 = var1.variable1 * 2
class class3():
def __init__(self):
self.var1 = class1()
self.var2 = class2()
instance = class3()
instance.var1.variable1 = 10
instance.var2.method2()
print instance.var2.variable2
приведенный выше код, очевидно, остановится во второй строке, потому что class2 не знает, что такое var1.
Теперь я знаю, что что-то подобное выполняется с подклассами, или просто поддерживая методы под одним классом. Но в моем случае я не думаю (я не говорю, что знаю, так как я не очень опытен, но я не думаю), что это приемлемое решение.
Вот bigger sample code (что я на самом деле работаю), и это еще не все, есть еще две (еще большие) системы, чем это мне нужно реализовать (навыки & перки). Поэтому, если бы я полагался на подклассы, у меня был бы один массивный класс, загруженный подклассами, а не со многими классами, объединенными позже в коде.
Каковы хорошие способы решения этой проблемы? Я просто делаю все это неправильно?
Edit/Update: Еще одно замечание, этот код будет повторно использоваться несколько раз за много различных переменных, а не только один (конечно.)
Существует несколько способов решения этой проблемы. Тот, который я нахожу наиболее очевидным, состоит в том, чтобы не иметь 'class2' handle' method2'; переместите логику где-нибудь, которая знает о необходимых объектах, например 'class3'. – user2357112
@ user2357112, как я уже сказал, я думаю, что это невозможно, но теперь, когда вы упомянули об этом, «цепочка» может работать, хотя это еще больше осложнит код. (например, объявляя переменную, которая использует класс1 в классе2, а затем использует класс2 и класс3 в классе4 и т. д. вместо того, чтобы пытаться объединить классы 1, 2 и 3 в классе 4, как я делаю сейчас) – Cestarian