是否有可能“进入”一种方法,在需要时进行更改

时间:2011-12-08 16:06:25

标签: python code-reuse

我正在研究访问多个网站的Python脚本。我不认为为每个网站编写一个完整的类是一个可行的选项,所以我正在寻找一种尽可能减少代码和重用代码的方法,并尽可能高效地编写代码。虽然网站共享相同或类似的引擎(例如Wordpress),但它们通常会有不同的细节,如cookie名称,更改的URL路径(例如example.com/signin.php和example2.com/login.php),数据名称和值POST请求,依此类推。

在大多数情况下,我可以使用变量,但有时我需要在方法中间从检索到的url中找到额外的数据以继续,这意味着在继续之前添加需要处理的几行代码。我发现理论上可能的解决方案是使用超类。但我找不到任何有关如何实际“进入”方法进行更改的信息。为了更好地说明我的观点,请看一下这个例子

class Wordpress(object):
    def login(self):
        # Do some stuff here


    def newentry(self):
        # Code to check if I'm logged in code
        # and do bunch of other stuff
        #
        # Retrieve a page that *** sometimes contain important information 
        # in which case must be processed to continue! ***
        data = {'name'  : title,
                'message' : message,
                'icon' : iconid}
        # Post new entry here

正如我在上面的例子中已经注释过的,在某些情况下,我需要在方法本身内部进行调整,添加代码片段,或者更改字典中变量或值的值等。我怎样才能实现,如果它甚至可能吗?也许我对超级课程的看法很遥远,而且他们并不是我认为的那样。

也许还有其他我没有想过的方法。随意发布您自己的想法如何解决这个问题。我期待着你的回复。谢谢。

1 个答案:

答案 0 :(得分:1)

为什么你不能从main方法中调用一些process函数,进程可以做你想做的任何事情,你甚至可以在派生类中覆盖它,例如。

class WordPress(object):
    def newentry(self):
        data = get_data()
        data = process_data(data)

        # do moe generi cthings

    def process_data(self):
        return data