我想使用python-twitter
,但扩展Status
类以添加一些新的方法和属性。什么是pythonic的方式来做到这一点?Python - 如何更改模块实现?
目前,我的功能是为Status
添加属性和新功能,例如,
process_status(status):
status.datetime = ...
status.phrase = ...
prettyprint_status(status):
# do something...
当然,我只是想在Status
构造函数中添加额外的方法。我发现了一个stackoverflow question discussing this其中提出做一个新的模块,ext-twitter
,它包含每个类的新的实现,如如下:
# ext_twitter.py
import twitter
class Api(twitter.Api):
pass
class Status(twitter.Status):
def __init__(self, *args):
twitter.Status.__init__(self, *args)
self.args = args
self.time = parseTime(self.created_at)
self.phrase = ...
def prettyprint(self):
# something
然而,这并不因为Status
类由Twitter的API对象生成工作,并在这里ext-twitter.Api()
调用python-twitter.Api()
它没有引用我的扩展状态类。
有什么方法可以将我的功能添加到python-twitter模块而不分叉它并创建自己的版本?
谢谢,这个工作,一旦我改变了构造带** kwargs以及*指定参数时,和状态(TwitterStatus)构造函数需要调用TwitterStatus而不是twitter.Status来避免循环自引用。编辑你的答案来反映这个 – dandelion 2013-05-12 19:54:27
啊,好的。请注意,对超类构造函数的调用最好使用'super'执行。谷歌“Python超级认为超级”是一个很好的指南。如果你使用Py3k,它会更好。 – Marcin 2013-05-12 20:16:55