Jak zastąpić zaimportowaną klasę Pythona dla wszystkich wywołań

Tworzę python-packages / MyLibPackage, które będę importować w moich projektach.

MyLibPackage.____init____.py zawiera mymodiciation.py. Ponadto folder MyLibPackage zawiera inny plik: base_classes.py (= zewnętrzny projekt)

import mymodiciation.py ”from base_classes import *

Cel: Mogę zaimportować MyLibPackage, który ma wszystkie klasy z klasy base_classes (= zewnętrzny projekt). A jeśli muszę zmodyfikować niektóre klasy lub funkcje, mogę je zastąpić w mymodiciation.py. To działa, ale mam problem. Na przykład:

Nadpisuję te klasy w mymodiciation.py:

<code>class Bookcollection(Bookcollection):
   new_member = "lalala"


class user(user):
   def get_books(self):
      return Bookcollection()
</code>

Jeśli zrobię:

<code>from MyLibPackage import *
x = user()
books = x.get_books()
</code>

następnie obiekt Bookcollection ma właściwość „new_member”. Dobry! Ale jeśli to zrobię:

<code>from MyLibPackage import *
x = shelf() #this class is not overwritten and used also the object "Bookcolelction"
books = x.get_books()
</code>

następnie obiekt Bookcollection NIE ma właściwości „new_member”, ponieważ jest instancją z MyLibPackage.base_classes.Bookcollection, a nie z moją nadpisaną klasą MyLibPackage.mymodiciation.Bookcollection

Jak mogę powiedzieć: jeśli nadpisuję klasę w modulacji, to MyLibPackage musi z niej skorzystać, chociaż wywołanie pochodzi z MyLibPackage.base_classes.shelf (get_books).

questionAnswers(2)

yourAnswerToTheQuestion