Python中文
首页
教程
问答
标签
搜索
登录
注册
如何覆盖所有调用的导入python类
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我创建了一个python包/MyLibPackage,并将其导入到我的项目中。</p> <p><code>MyLibPackage.____init____.py</code>包括mymodiciation.py。此外,MyLibPackage文件夹还包含另一个文件:base_classes.py(=外部项目)</p> <p>mymodiciation.py导入“<code>from base_classes import *</code>”。</p> <p>目标: 我可以导入MyLibPackage,它包含来自基类(=外部项目)的所有类。 如果我需要修改一些类或函数,我可以在mymodiciation.py中覆盖它。这很管用,但我有个问题。例如:</p> <p>我在mymodiciation.py中覆盖这些类:</p> <pre><code>class Bookcollection(Bookcollection): new_member = "lalala" class user(user): def get_books(self): return Bookcollection() </code></pre> <p>如果我这样做了:</p> <pre><code>from MyLibPackage import * x = user() books = x.get_books() </code></pre> <p>然后对象Bookcollection具有属性“new_member”。很好! 但如果我这样做:</p> <pre><code>from MyLibPackage import * x = shelf() #this class is not overwritten and used also the object "Bookcolelction" books = x.get_books() </code></pre> <p>然后对象Bookcollection没有属性“new_member”,因为他是MyLibPackage.base_classes.Bookcollection的实例,而不是MyLibPackage.mymodification.Bookcollection的重写类</p> <p>我该怎么说:如果我在mymodification中重写了一个类,那么MyLibPackage必须使用它,尽管当调用从MyLibPackage.base_classes.shelf(get_books)访问时。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>当您遇到名称空间冲突时,使用相同名称的类通常是一个坏主意。我建议把你的<code>MyLibPackage.base_classes.Bookcollection</code>改成<code>MyLibPackage.base_classes.BaseBookcollection</code>或类似的。这样就可以按预期工作了。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
1 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
8 回答
在Python3中使用Script=argv
3 回答
在python3中使用selenium webdriver进行未解析的回溯
6 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
7 回答
在Python3中使用Selenium和Requests模块从网页获取文件
8 回答
在python3中使用SIGINT终止函数
3 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
3 回答
在python3中使用smtplib发送XML内容
2 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
5 回答
在python3中使用sounddevice和numpy编写wav文件
9 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
2 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
1 回答
在python3中使用SQLite的FTS3/4
4 回答
在Python3中使用struct.calcsize()和len()有区别吗?
5 回答
在python3中使用substring函数时发生TypeError
9 回答
在Python3中使用Tkinter entry小部件写入串行设备
2 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
2 回答
在python3中使用tkinter的子帧
8 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
8 回答