2016-09-18 91 views
1

這似乎是Python中的一個常見錯誤,我發現許多人都在詢問類似的問題,但是花了最後一段時間嘗試那些他們似乎適用的解決方案,有沒有運氣,所以訴諸要求找出我失蹤。AttributeError:實例沒有任何屬性

我收到AttributeError的:WebHandler實例沒有屬性「SEARCH_STR」

這似乎是這一個特定方法,任何時候我調用任何從這個方法___init___設置類變量我收到此錯誤。我已經提取它作爲一個簡單的函數,而不是一個類方法的測試文件,它的工作正常,我已經嘗試重新縮進幾次,以確保它不是,所以我在在這個損失。

我使用Python 2.7和如果的TextWrangler任一有幫助(已的TextWrangler沒有給我3年這樣的任何問題,但想通什麼應該被包括在內)

import requests 
import re 

class WebHandler(): 

    def ___init___(self): 
     self.urllist = [] 
     self.search_str = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[[email protected]&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', re.I|re.M) 

    def set_urls(self, test, data): 
     for line in test[11:]: 
      if (("even" in line) or ("odd" in line)): 
       match = re.search(self.search_str, line) 
      self.urllist.append(match.group(0)) 

另一件事我試過,如果我從___init___複製的屬性,只是讓他們本地set_urls(),並呼籲他們沒有自我這樣,它正常工作,並不會引發任何錯誤,這是混淆了我,甚至更多。

不知道我錯過了什麼。謝謝!

回答

3

你的初始化函數有三個下劃線:

def ___init___(self): 

should have only two

def __init__(self): 

因爲它是現在寫的,它沒有被當你創建一個新的對象調用。

+0

謝謝!這是問題所在。 –

+1

@KBirch不客氣。由於您對該網站看起來相對較新,請注意,您可以對所有您認爲有幫助的答案加註。 TigerHawkT3的答案,特別是與這個答案基本相同。 –

+0

謝謝,注意!並高舉你的和他的。當我可以貢獻一些東西時,仍然在學習我的方式並尋找空閒時間。 –

3

這一點,你必須:

def ___init___(self): 

是不一樣的,因爲這時候一個對象實例被調用:

def __init__(self): 

不同的是,你有無論是強調對一邊init,而兩個是必需的。

相關問題