2016-06-23 6 views
1

私はこれらの2つのメソッドを持つクラスfooを持っています。 variableLevelDictionaryは文字列をキーとした辞書であり、値としてリストされます。メインモジュールでmain()機能でPython呼び出し元クラスのリストを参照できません

class foo: 


levels = [] 
specificLevels = [] 
variableLevelDictionary = {} 

def __init__(self): 
    self.createDictionaryOfVariableAndLevel() 

    def getVariableLevelDictionary(self): 
    return self.variableLevelDictionary 

    def createDictionaryOfVariableAndLevel(self): 

    variableList = self.listOfVariables() 
    levels = self.getAllLevels() 
    specificLevels=self.getSpecicficLevels() 
    variableLevelDictionary = {"aaa":levels, 
           "bbb":levels, 
           "ccc":levels, 
           "ddd":levels, 
           "eee":specificLevels 
           } 

私はfooをインスタンス化してから、私は

global variableLevelDictionary 
fooInstance = foo() 
variableLevelDictionary =fooInstance.getVariableLevelDictionary() 

このメソッドを呼び出すと、私は、リストの値を印刷するとき、私はこの

list = variableLevelDictionary.get("aaa") 

を行います私はなしを得る。

誰かが私が間違っていることを説明できますか?あなたが実際にあなたのクラス「foo」が持っていない場合self.variableLevelDictionaryを返すようにしようとしているgetVariableLevelDictionary方法で

1)同じ名前の属性を持っている:私は気づく何

+0

'variableLevelDictionary'は' self.variableLevelDictionary'と同じではありません –

+0

@PeterWood - ご意見ありがとうございます。どうすればこの問題を解決できますか? – gansub

+0

@ PeterWood - self.variableLevelDictionaryから自分自身を削除すると、NameErrorが返されます:name 'variableLevelDictionary'が定義されていません – gansub

答えて

1

は3つの間違って行くことができるものです

はAttributeError::、これはあなたがこの関数を呼び出すときに、このエラーを取得することを意味します「foo」でオブジェクトが属性を持っていない「をvariableLevelDictionary」

この問題を解決するためには、への2番目の関数の中で、試みることができます次のようにしてください:

self.variableLevelDictionary= {"aaa":levels, 
           "bbb":levels, 
           "ccc":levels, 
           "ddd":levels, 
           "eee":specificLevels 
           } 

2)実際にあなたがfooInstanceを持っているときは、foo.getVariableLevelDictionaryを呼び出しているので、おそらくあなたは

3)あなたが代入されている)ソートうち、あなたがない限り1を失敗した、fooInstance.getVariableDictionaryを呼び出すしたいと思いますという名前の変数という名前の変数には、リストのデータ構造のPythonバインド語がありますが、これはお勧めできません。

別の名前を指定することで解決できます。おそらくmy_listです。

お試しください!

+1

で始まっています申し訳ありません私は自分のコードで間違いを犯しました!それは実際にはfooInstanceであり、fooではありません! – gansub

+0

変数 "levels"の内容を出力し、それがNoneでないことを確認できますか? –

+0

デフォルトでは、dictionary.get(k)は、kが辞書にない場合、Noneを返します。ゲットの中にタイプミスがないことは確かですか? –

関連する問題