2017-03-19 23 views
0

nosetest実行しているときに、私はコードPythonのはAttributeError

def testMC(): 
    data = ModelCalibrator() 
    Phi = data.phis() 
    assert_equal(Phi[0], 1) 

これは保持を使用してnosetestsを実行しています別のtest.pyファイル内のコード

class ModelCalibrator(): 
    def __init__(self): 
     self.file1 = 'Mortality_Population.txt' 
     self.file2 = 'Deaths_1x1_adj.txt' 
     self.MaxAge = 101 
     self.MinAge = 18 
     self.basisAges = np.array([18, 50, 100])[np.newaxis] 
     self.mortalityData = PopulationData() 
     self.deathRateData = DeathRateData() 
     (self.age, self.phis) = computeBasisFunctions(ModelCalibrator) 

def computeBasisFunctions(mc): 
    MaxAge = mc.MaxAge 
    MinAge = mc.MinAge 
    age = np.arange(MinAge, MaxAge)[np.newaxis] 

    basisAges = mc.basisAges 
#calculations 
... 
return (age, phis) 

が含まれているModel.pyというファイルを持っていますtypeerオブジェクト 'ModelCalibrator'には属性 'MaxAge'がありません。私がどこに間違って行っているのか誰にでも教えてくれますか?

答えて

1

この行では、オブジェクトではなくクラスを渡しています。 ModelCalibratorselfに置き換えてください。クラスはオブジェクトのテンプレートに過ぎません。 selfは、すべてのプロパティが設定されている現在のオブジェクトを表します。

(self.age, self.phis) = computeBasisFunctions(self) 

あなたはこれらのオブジェクトなしでアクセスできるようにしたい場合は別の方法として、あなたは__init__機能の外にそれらを移動することによって、クラス変数としてMaxAgeのとMINAGEを設定しますが、クラス内hereを示すようにできます。

関連する問題