0

我能够让我的代码工作,但我想知道在构造函数之外的类上设置实例方法是否正确。当我写这篇文章时,它只是感觉不对,但我无法在构造函数中找到一种方法来做到这一点。任何有关如何重构它的帮助将不胜感激。

谢谢!

class Parser():

    def __init__(self, uri):
        self.uri = uri

    def createSoup(self):
        htmlPage = urlopen(self.uri)
        htmlText = htmlPage.read()
        self.soup = BeautifulSoup(htmlText)

def main():
    urls = Url().return_urls()
    p = Parser(urls[test])
    p.createSoup()
    print(p.soup)


if __name__ == '__main__':
    main()

我认为会更好,但我无法让它工作是在构造函数中设置 self.soup ,如下所示:

def __init__(self, uri):
    self.uri = uri
    self.soup = BeautifulSoup(htmlText)
4

1 回答 1

1

这会对你有帮助吗?在 init 中调用 createSoup 函数。

class Parser():

    def __init__(self, uri):
        self.uri = uri
        self.soup = self.createSoup()

    def createSoup(self):
        htmlPage = urlopen(self.uri)
        htmlText = htmlPage.read()
        return BeautifulSoup(htmlText)

另一种方法是在 main() 方法中创建 BeautifulSoup 实例,并将其作为 Parser(urls[test], BeautifulSoup_instance) 的参数发送给 Parser,并在 init() 函数中将其分配给 self.soup。

于 2013-05-27T04:42:49.410 回答