在python中的构造函数之外创建实例方法

时间:2013-05-27 04:23:57

标签: python oop constructor beautifulsoup

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

谢谢!

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)

1 个答案:

答案 0 :(得分: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作为Parser(urls [test],BeautifulSoup_instance)并将其分配给init()函数中的self.soup。