几种方法。
简单的方法:
不要扩展模块,扩展类。
exttwitter.py
import twitterclass 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.adef makeBall(a): return Ball(a)def override(): print "OVERRIDE ONE"def dontoverride(): print "THIS WILL BE PRESERVED"
extmodule.py
from basemodule import *import basemoduledef makeBalls(a,b): foo = makeBall(a) bar = makeBall(b) print foo,bardef override(): print "OVERRIDE TWO"def dontoverride(): basemodule.dontoverride() print "THIS WAS PRESERVED"
runscript.py
import extmodule#pre is in extended moduleprint extmodule.makeBalls(1,2)#returns Ball(1) Ball(2)#pre is in base moduleprint extmodule.makeBall(1)#returns Ball(1)#function from extended module overwrites base moduleextmodule.override()#returns OVERRIDE TWO#function from extended module calls base module firstextmodule.dontoverride()#returns THIS WILL BE PRESERVEDnTHIS WAS PRESERVED
我不确定extmodule.py中的double import是否是pythonic
-您可以将其删除,但是这样您就无法处理想要扩展basemodule命名空间中的函数的用例。
至于扩展类,只需创建一个新的API(basemodule.API)类即可扩展Twitter API模块。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)