Я борюсь с определением унаследованных классов по нескольким файлам.Наследование классов по файлам
Я искал долгое время и нашел несколько примеров, но никто из них не разрешил мою проблему.
Давайте углубимся в качестве примера:
file1.py:
from file2 import SubClass
class MainClass:
def __init__(self):
print("This is MainClass")
mc = MainClass()
mc.SaySomething()
file2.py:
from file1 import MainClass
class SubClass(MainClass):
def SaySomething(self):
print("This is the subclass")
Моя цель состоит в том, чтобы разделить огромный класс на несколько файлов, каждый содержащих некоторые связанные функции.
Я пробовал много разных комбинаций, но всегда получаю сообщение об ошибке - все меняется, когда я что-то меняю, но результат тот же; он не работает.
Я думаю, это связано с тем, как я пытаюсь импортировать каждый файл друг в друга, но я не понял, как это сделать, поэтому я надеюсь, что кто-то сможет его решить и объяснить мне.
Фактически третий файл будет импортировать основной класс и выполнить его. Я думаю, что для этого файла нужно импортировать файл file1.py, поскольку он будет импортировать файл2 - в противном случае исправьте меня, пожалуйста.
Хорошо, так что это часть первая. Тем не менее, мне также интересно, если theres способ, которым я могу сделать несколько вложенных модулей/функций в объекте - для структур.
Я уверен, что пример объяснит это лучше. Могу ли я сделать что-то вроде:
mc = MainClass()
mc.SubClass.SaySomething()
... вместо просто mc.SaySomething()
? По-моему, я могу сохранить лучшую структуру кода.
Это называется круговой импорт. В файле1 вы импортируете smth. из файла2 и наоборот. Это почти всегда означает, что вы должны изменить свой дизайн. – schwobaseggl
'from file2 import SubClass' не требуется, вы не используете' SubClass' –
Я не уверен, как файл1.py тогда должен знать, что определен подкласс? –