运行nosetest

时间:2017-03-19 17:59:52

标签: python

我有一个名为Model.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)

在一个单独的test.py文件中,我使用代码

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

这一直告诉我,我有一个属性错误:type object' ModelCalibrator'没有属性' MaxAge'。谁能告诉我哪里出错了?

1 个答案:

答案 0 :(得分:1)

在这一行中,您传入的是类而不是对象。尝试将ModelCalibrator替换为self。该类只是该对象的模板。 self表示设置了所有属性的当前对象。

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

或者,如果您希望在没有对象的情况下访问它们,可以将MaxAge和MinAge设置为类变量,方法是将它们移到__init__函数之外,但在类中显示here