Я создаю python-packages/MyLibPackage, который я буду импортировать в свои проекты.
MyLibPackage.____init____.py
включает mymodiciation.py. Кроме того, папка MyLibPackage содержит другой файл: base_classes.py(= внешний проект)
mymodiciation.py импортирует "from base_classes import *
".
Цель: Я могу импортировать MyLibPackage, который имеет все классы из base_classes (= внешний проект). И если мне нужно модифицировать некоторые классы или функции, я могу перезаписать это в mymodiciation.py. Это работает, но у меня проблема. Например:
Я перезаписываю эти классы в mymodiciation.py:
class Bookcollection(Bookcollection):
new_member = "lalala"
class user(user):
def get_books(self):
return Bookcollection()
если:
from MyLibPackage import *
x = user()
books = x.get_books()
то объект Bookcollection имеет свойство "new_member". Хорошо! Но если я сделаю это:
from MyLibPackage import *
x = shelf() #this class is not overwritten and used also the object "Bookcolelction"
books = x.get_books()
тогда объект Bookcollection НЕ имеет свойство "new_member", потому что он инстанс с MyLibPackage.base_classes.Bookcollection, а не с моим перезаписанным классом MyLibPackage.mymodiciation.Bookcollection
Как я могу сказать: если я перезаписываю класс в mymodiciation, то MyLibPackage должен использовать это, хотя при вызове cames из MyLibPackage.base_classes.shelf(get_books).