Como sobrescrever uma classe python importada para todas as chamadas

Eu crio um python-packages / MyLibPackage que importarei em meus projetos.

MyLibPackage.____init____.py inclui mymodiciation.py. Além disso, a pasta MyLibPackage contém outro arquivo: base_classes.py (= external project)

mymodiciation.py imports "from base_classes import *".

Objetivo: Eu posso importar MyLibPackage que tem todas as classes de base_classes (= external project). E se eu precisar modificar algumas classes ou funções, eu posso sobrescrever isso em mymodiciation.py. Isso funciona, mas eu tenho um problema. Por exemplo:

Sobrescrevo essas classes em mymodiciation.py:

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


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

se eu fizer:

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

então o objeto Bookcollection tem a propriedade "new_member". Boa! Mas se eu fizer isso:

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

então o objeto Bookcollection NÃO tem a propriedade "new_member" porque ele é instanciado com MyLibPackage.base_classes.Bookcollection e não com minha classe sobrescrita MyLibPackage.mymodiciation.Bookcollection

Como posso dizer: se eu sobrescrevo uma classe na mymodiciation, então o MyLibPackage tem que usar isso, embora quando a chamada for de MyLibPackage.base_classes.shelf (get_books).

questionAnswers(2)

yourAnswerToTheQuestion