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