【问题标题】:Is it possible 'step into' a method to make changes when needed是否有可能“步入”一种在需要时进行更改的方法
【发布时间】:2011-12-08 16:06:24
【问题描述】:

我正在编写一个可以访问多个网站的 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

正如我在上面的示例中已经评论过的那样,在某些情况下,我需要在方法本身内部进行调整,添加代码的 sn-p,或更改变量的值或字典中的值等。我该怎么做实现这一点,如果它甚至可能?也许我对超类的看法已经离谱,而且它们并不是我认为的那样。

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

【问题讨论】:

    标签: python code-reuse


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多