运行nosetest时Python AttributeError

运行nosetest时Python AttributeError,python,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([

我有一个名为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文件中,我使用代码运行测试

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

这一直告诉我我有一个attributeerror:type对象“ModelCalibrator”没有属性“MaxAge”。有谁能告诉我哪里出错了吗?

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

(self.age, self.phis) = computeBasisFunctions(self)
或者,如果希望在没有对象的情况下访问这些变量,可以将MaxAge和MinAge设置为类变量,方法是将它们移到
\uuuu init\uuuu
函数外部,但移到类内部,如图所示