2016-09-18 28 views
1

これはPythonのよくあるエラーのようです。同様のことを尋ねてきた人の多くのインスタンスが見つかりましたが、最後の(長い時間)運がなかったので、私が逃しているものを見つけるように頼んでいました。AttributeError:インスタンスに属性がありません

私ははAttributeErrorを受けています:WebHandlerインスタンスには属性「search_str」この1つの特定の方法であると思わ

、私はこの方法から___init___に設定されたクラス変数のいずれかを呼び出す任意の時間を持っていませんこのエラーが表示されます。私は、クラスメソッドではなく単純な関数としてテストファイルに抽出しました。うまくいきました。私は何度かすべてを再インデントして、それがそうでないことを確認しました。これでの損失。

これらのいずれかが有用であるならば、私は

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)) 

(TextWranglerのは、私にこのような3年間ですべての問題を与えられたが、何が含まれるべき考え出していない)もう一つのPythonの2.7とTextWranglerのを使用しています私は___init___から属性をコピーして、単にset_urls()にそれらをローカルにすると自己それが正常に動作し、さらに私を混乱させているすべてのエラーを、スローされません。そのようにすることなく、それらを呼び出す場合は、試してみました。

私には何も分かりません。ありがとう!

答えて

3

あなたのinit関数が3アンダースコアました:

def ___init___(self): 

それはshould have only two:それが今書かれているとして、あなたは、新しいオブジェクトを作成するとき

def __init__(self): 

、それが呼び出されていません。

+0

ありがとうございました!それが問題でした。 –

+1

@KBirchよろしくお願いします。あなたは比較的新しいサイトだと思うので、参考になったすべての回答をupvoteできます。 TigerHawkT3の答えは、特にこれと基本的に同じです。ありがとう、指摘された –

+0

!そして、あなたと彼の前を追い払った。私の周りの方法を学んで、空き時間を探していたら、私はあまりにも貢献することができます。 –

3

あなたが持っているこの:

def ___init___(self): 

は、オブジェクトをインスタンス化するときに呼び出される。このように同じではありません。

def __init__(self): 

違いは、あなたがを持っているということであることのいずれかにアンダーinitの2つが必要です。

関連する問題