我创建了一个 python-packages /MyLibPackage,我将在我的项目中导入它。
MyLibPackage.____init____.py
包括 mymodiciation.py。此外,MyLibPackage 文件夹包含另一个文件:base_classes.py(=external project)
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 必须使用它,尽管当调用来自 MyLibPackage.base_classes.shelf (get_books) 时。