我有一个名为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文件中,我使用代码
运行nosetestsdef testMC():
data = ModelCalibrator()
Phi = data.phis()
assert_equal(Phi[0], 1)
这一直告诉我,我有一个属性错误:type object' ModelCalibrator'没有属性' MaxAge'。谁能告诉我哪里出错了?
答案 0 :(得分:1)
在这一行中,您传入的是类而不是对象。尝试将ModelCalibrator
替换为self
。该类只是该对象的模板。 self
表示设置了所有属性的当前对象。
(self.age, self.phis) = computeBasisFunctions(self)
或者,如果您希望在没有对象的情况下访问它们,可以将MaxAge和MinAge设置为类变量,方法是将它们移到__init__
函数之外,但在类中显示here。