У вас есть критический недостаток в ваших проектных предположениях:
3- Я использую self.test в SubClassTwo, чтобы получить изменения из SubClassOne.
Нет, вы не надо. SubClassTwo и SubClassOne являются дочерними подклассами. self.test
в SubClassTwo относится к атрибуту test
экземпляра SubClassTwo; SubClassOne не является частью этой родословной. SubClassTwo наследует только от MainClass. Изменение атрибута test
экземпляра SubClassOne не может автоматически влиять на экземпляр SubClassTwo.
В вашем комментарии к старому ответу я вижу, в чем может быть ваша проблема:
методы во время выполнения идут последовательно в порядке, ClassOne, затем Class Two
Вы объявили два дочерних классов , независимо друг от друга, not методов. substract()
[sic] и multiply
- это методы двух разных классов. Например, если бы вы попробовали в конце опубликованного кода
print(run.substract(5, 2))
, вы бы получили ошибку времени выполнения: run
не имеет метода с именем substract
- run
имеет тип SubClassTwo , у которого нет такого метода. substract
- это метод только SubClassOne.
Очень просто, вам нужно определить, что вы хотите, чтобы ваши объекты выполняли, а затем написать соответствующие структуры Python для сопоставления. Поскольку вы недостаточно рассказали нам о желаемой операции, мы не можем изменить ваш опубликованный код для соответствия. Для простой установки атрибута экземпляра требуется только один класс, а не три.