【问题标题】:Appending args and code to an inherited method in python2?将参数和代码附加到python2中的继承方法?
【发布时间】:2015-08-10 23:54:15
【问题描述】:

我正在继承一个已设置 init 方法的类。 我想在这个方法中添加一个 arg,以及几行代码。 我怀疑我可以使用 super 来做到这一点,但不太确定如何以及我发现的示例对我来说并不总是有意义。

示例代码及说明:
bot 模块有 2 个类:Bot 和 BotStreamListener
BotStreamListener 继承自 tweepy.StreamListener,它已经定义了 init
我需要在这个类方法中附加一个 arg 和一些代码,以便 BotStreamListener 类中的方法知道 Bot 类的实例化实例。 (在下面的示例中,它是 mybot)。

...

def main():

    try:
        me = api.me()
        print "Starting userstream for %s ( %s )" %(me.name, me.screen_name)
        mybot = bot.bot(api)
        #What it looks like now
        stream = tweepy.Stream(auth, bot.BotStreamListener(api))

        #What i would like it to be able to handle
        stream = tweepy.Stream(auth, bot.BotStreamListener(api, mybot))

简而言之,我想在继承的 init 类方法中添加更多参数和一些代码,而不需要重新定义方法。 我正在使用 python 2.7,任何帮助都非常感谢。

【问题讨论】:

    标签: python oop inheritance


    【解决方案1】:

    除了知道它是什么之外,我不熟悉 tweepy,但这应该可以帮助您入门:

    # bot.py
    class BotStreamListener(StreamListener):
        def __init__(api, bot):
            super(self.__class__, self).__init__(api)
            # Do your stuff
            self.bot = bot
            # Do more of your stuff
    
    mybot = bot.bot(api)
    bsl = BotStreamListener(api, mybot)
    

    【讨论】:

    • 哇,效果很好。对于可能遇到此问题的其他人,以下是生成的代码: – class BotStreamListener(StreamListener): """处理 tweepy 流事件的类。例如:on_connect、on_disconnect、on_status、on_direct_message 等。 """ def init__ (self, api, bot): # 添加一个 bot arg 和代码以将其存储在实例化的类中 super(self.__class, self).__init__(api) self.bot = bot
    猜你喜欢
    • 2015-04-17
    • 2015-10-16
    • 2012-04-14
    • 2018-04-03
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多