2013-05-27 47 views
0

我能夠讓我的代碼工作,但我想知道是否在構造函數之外的類上設置實例方法是正確的。當我寫這篇文章時,它感覺不太正確,但我無法想出在構造函數中使用它的方法。任何幫助如何重構這將不勝感激。在python的構造函數外部創建實例方法

謝謝!

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

這不是一種方法,而是一種屬性。另外,當你嘗試在'__init__'中做什麼時它不工作? – BrenBarn

回答

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實例並將其作爲參數分析器作爲分析器(網址[測試],BeautifulSoup_instance)並將其指定爲在初始self.soup()函數。

相關問題