扩展现有Python模块的最佳实践是什么–在这种情况下,我想python-twitter
通过向基础API类添加新方法来扩展该包。
我看了看tweepy
,我也很喜欢。我只是发现python-twitter
更容易理解和扩展所需的功能。
我已经编写了方法-我试图找出在python-twitter
不更改此模块核心的情况下将其添加到package模块中的最Pythonic且破坏性最小的方法。
几种方法。
简单的方法:
不要扩展模块,扩展类。
exttwitter.py
import twitter
class Api(twitter.Api):
pass
# override/add any functions here.
缺点:twitter中的每个类都必须位于exttwitter.py中,即使它只是一个存根(如上所述)
一种更困难的(可能是非Python的)方式:
将*从python-twitter导入一个模块,然后进行扩展。
例如 :
basemodule.py
class Ball():
def __init__(self,a):
self.a=a
def __repr__(self):
return "Ball(%s)" % self.a
def makeBall(a):
return Ball(a)
def override():
print "OVERRIDE ONE"
def dontoverride():
print "THIS WILL BE PRESERVED"
extmodule.py
from basemodule import *
import basemodule
def makeBalls(a,b):
foo = makeBall(a)
bar = makeBall(b)
print foo,bar
def override():
print "OVERRIDE TWO"
def dontoverride():
basemodule.dontoverride()
print "THIS WAS PRESERVED"
runscript.py
import extmodule
#code is in extended module
print extmodule.makeBalls(1,2)
#returns Ball(1) Ball(2)
#code is in base module
print extmodule.makeBall(1)
#returns Ball(1)
#function from extended module overwrites base module
extmodule.override()
#returns OVERRIDE TWO
#function from extended module calls base module first
extmodule.dontoverride()
#returns THIS WILL BE PRESERVED\nTHIS WAS PRESERVED
我不确定extmodule.py中的double import是否是pythonic
-您可以将其删除,但是这样您就无法处理想要扩展basemodule命名空间中的函数的用例。
至于扩展类,只需创建一个新的API(basemodule.API)类即可扩展Twitter API模块。
问题内容: 跟进有关重新加载模块的问题,如何从已更改的模块重新加载特定功能? 伪代码: 问题答案: 您想要的是可能的,但是需要重新加载两件事……首先,但是您还必须这样做(假设是包含该语句的模块的名称)。 至于为什么…第一次加载时,将创建一个对象,其中包含一个对象。当您导入到模块,它存储到一个参考。当被调用时,对象被消隐,并且该模块重新执行。这意味着所有引用仍然有效,但是已经创建了一个新对象…因此,
更新问题: 在这一点上,如果有人能给我任何提示,我可以添加任何类型的扩展在运行时在selenium中,我的目标是能够运行脚本,并让chrome安装扩展和活动,因为当你运行chromedriver时,chrome就像香草一样(没有安装或活动的扩展)我试过以下答案,但没有运气,我试过查找视频,查看文档,但我总是失败,如果有人有任何见解,我将非常感谢!!! 当我使用selenium时,我试图解除阻止or
问题内容: 有人可以告诉我如何在最新版本的Python上安装sqlite3模块吗?我正在使用Macbook,并在命令行上尝试了: 但是会弹出一个错误。 问题答案: 您不需要安装模块。它包含在标准库中(自Python 2.5起)。
问题内容: 我有一个C扩展模块,很高兴分发内置的二进制文件。SetupTools使得在OS X和GNU / Linux上构建扩展模块变得很容易,因为那些OS随GCC一起提供,但是我不知道如何在Windows中进行。 我需要购买Visual Studio的副本,还是可以使用Visual Studio Express?我可以只使用Cygwin或MinGW吗? 问题答案: 您可以同时使用MinGW和VC
dc_motor_driver --- 双直流电机驱动模块 功能相关函数 dc_motor_driver.set_power(speed, ch = 0) 设置双路直流电机各路电机的动力,参数: speed 控制目标电机的动力值,参数范围是 -100 ~ 100。 ch 控制的电机通道,参数范围是 0 ~ 2,其中 0 表示两路电机通道,1 表示插槽1通道,2 表示插槽2通道。 程序示例 impo
问题内容: 我有一台运行时间较长的Python服务器,并且希望能够在不重新启动服务器的情况下升级服务。最好的方法是什么? 问题答案: 你可以使用reload内置函数重新加载已导入的模块: 在Python 3中,已移至imp模块。在3.4中,不推荐使用importlib,而在中添加了。当定位到3或更高版本时,在调用reload或导入时参考相应的模块。 我认为这就是你想要的。诸如Django开发服务器