На Python 3.6
Я хочу организовать свои занятия по папкам.
ClassX в папке Classes
Subclass_of_ClassX во вложенной папке
MyPackage
-__init__.py
-someCode.py
-folder Classes
-__init__.py
-ClassX.py
-Subfolder SubClasses
-__init__.py
-Subclass_of_ClassX.py
Subclass_of_ClassX переопределяет элементы (функции и переменные) из ClassX
Возникает вопрос: если я импортирую ClassX в любой проект и получаю любой экземпляр Subclass_of_ClassX, и я хочу использовать любую функцию переопределения, нужно ли мне явно импортировать подкласс?
Или я могу просто импортировать ClassX и абстрагироваться от любого унаследованного класса, используя любой экземпляр подкласса, как если бы это был ClassX?






Если у вас есть экземпляр класса - вам уже не нужно ничего импортировать, потому что он уже был импортирован в каком-то другом месте.
Да, я говорю о подклассе - экземпляры уже имеют ссылку на свой класс, поэтому вы не можете создать экземпляр, не импортировав куда-нибудь класс. Вы даже можете получить сам подкласс, не импортируя его, с помощью instance.__class__
Если вы откуда-то получаете экземпляр Subclass_of_ClassX, вам вообще не нужно дополнительно импортировать класс. Импорт класса просто делает имя доступным в вашей текущей области (модуле).
Вам нужно импортировать класс или подкласс только тогда, когда вам нужно ...
isinstance(obj, ClassX)То, что вы описываете, не является способом Pythonic для структурирования пакетов.
В конечном итоге вам придется делать
from mypackage.Classes.ClassX import ClassX
когда ты мог бы сделать с
from mypackage.class_x import ClassX
Если ваша посылка, например, зоопарк, где у вас есть животные и еда, я бы посоветовал поместить животных в одну упаковку, а их продукты - в другую.
myzoo/__init__.py (пустой)myzoo/animals/__init__.py (пустой)myzoo/animals/base.py (содержащий ваш базовый класс Animal)myzoo/animals/cats.py (содержащий, например, Lion и Tiger)myzoo/foods/__init__.py (пустой)myzoo/foods/base.py (содержащий ваш базовый класс Food)myzoo/foods/kibbles.py (содержит кусочки для кошек, не то, чтобы они им понравились)(У вас также может быть один файл для каждого животного / корма, и, вероятно, следует, если вы ожидаете, что они станут большими.)
Под «экземпляром класса» вы также подразумеваете любой экземпляр подкласса?