Как перезаписать импортированный класс python для всех вызовов

Я создаю python-packages /MyLibPackage, который буду импортировать в свои проекты.

MyLibPackage.____init____.pyвключает mymodiciation.py. Кроме того, папка MyLibPackage содержит еще один файл: base_classes.py(=внешний проект)

mymodiciation.py imports "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 должен использовать это, хотя когда вызов исходит из MyLibPackage.base_classes.shelf (get_books).

12
задан jldupont 5 April 2012 в 11:48
поделиться