私は、情報の宝庫を保存し、タグの関連付けによってそれらを検索するためのプログラムを構成する一連のpythonファイルを持っています。私はこのプログラムを多くのバージョンで動作させていましたが、最近私は、プログラムがひどく変わったようなマイナーな変更だと思ったものを作りました。 ENTRYオブジェクトは、固有のID番号、ニックネーム、値、およびタグのリストを保持するデータストレージの基礎です。私は他のファイルに入力を求めたときに、私は、交換可能に、「名前」と「ニックネーム」属性に言及していたので、私はすべてが「名前」と「ニックネーム」の言及検索と置換することを決めたに気づい属性が存在するにもかかわらず、Python 3 AttributeError
class ENTRY:
def __init__(self, idNum, nickName, value, tagList):
self.idNum = idNum
self.nickName = nickName
self.value = value
self.tagList = tagList
コードを簡単にフォローしてください。私はENTRY.pyファイルと、プログラム内のすべての関連するpythonファイルでこれを行いました。私は、大文字と小文字を区別する関数呼び出しなどで変更が混乱していないことを確認するためにそれらを校正することさえできます。
問題:私は、プログラムを実行すると、私は属性のエラーを取得:
:Traceback (most recent call last):
File "/Memory/TagMem.py", line 210, in <module>
main()
File "/Memory/TagMem.py", line 207, in main
dispatch(userChoice)
File "/Memory/TagMem.py", line 171, in dispatch
nameList('todo')
File "/Memory/TagMem.py", line 103, in nameList
memory.searchListNames(queryList)
File "/Memory/Memory.py", line 96, in searchListNames
each.printName()
File "/Memory/ENTRY.py", line 49, in printName
print("({}) {}".format(self.idNum, self.name))
AttributeError: 'ENTRY' object has no attribute 'name'
しかし、検索と置換した後に、ENTRYオブジェクトは、最も確かに属性「名前」を持っています
class ENTRY:
def __init__(self, idNum, name, value, tagList):
self.idNum = idNum
self.name = name
self.value = value
self.tagList = tagList
属性が非常に明確にクラスコンストラクタで定義されている場合、属性エラーが発生する理由を知っている人はいますか?完全なクラスコードの詳細な情報については
、githubのリポジトリを参照してください。https://github.com/kylelambert101/TagMem
と特定のクラッシュを誘発変化にコミット: https://github.com/kylelambert101/TagMem/commit/68987f2e6ed98012f36ec5230b3dac6f09373489
ありがとうございました!
あなたが考えているバージョンを実行していることを確認してください。 – user2357112
あなたが実行している別のファイルに、あるファイルからユーザ作成のクラスをインポートしているようですね。その場合、Pythonインタプリタを終了してバックアップを開始しようとしましたか?依存モジュールの変更は、終了しない限り再実行しても更新されません。 – Jeff
ええと、私は数回終了してプログラムを再開したので、それは問題だとは思わない。しかし、あなたのコメントは、どのファイルがENTRY.nameにアクセスしようとしているのか考えさせました。問題は、古いENTRYオブジェクトが入っているデータベースをピックしたことです。私は新しいエントリを作成することはできますが、古いもののname属性にアクセスしようとすると、エラーが発生します。私はそれを修正しようとし、それが問題なら私のポストを更新します! – Kyle