我創建了一個python-packages/MyLibPackage,我將在我的項目中導入它。如何爲所有調用覆蓋導入的python類
MyLibPackage.____init____.py
包括mymodiciation.py。此外,MyLibPackage文件夾包含另一個文件:base_classes.py(=外部項目)
mymodiciation.py進口「from base_classes import *
」。
目標: 我可以導入MyLibPackage,它具有base_classes(= external project)中的所有類。 如果我需要修改某些類或函數,我可以在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.base_classes.shelf(get_books)是來自MyLibPackage.base_classes.shelf,MyLibPackage也必須使用它。
如果你在繼承鏈中糾纏不清,那麼也許你應該看看其他解決方案。 – jldupont 2012-04-05 11:52:48
也許我可以嘗試使用鉤子?! – 2012-04-05 12:27:28