我有多个教学班,像下面的一个方法:从Python中的类方法返回多个值的最有效方法是什么?
@property
def max_ill(self):
maxval = max(self.illarr)
maxpts = [idx for idx,val in enumerate(self.illarr) if val==maxval]
maxpts = [ self.roomgrid.ptsdict[pt].ptid for pt in maxpts ]
return {'data':maxval,"points":maxpts}
我想什么做的是这个属性分成两个,这样我可以访问max_ill['data']
和max_ill['points']
作为单独的属性一样.max_ill_data
和.max_ill_points
。这将有助于自动代码竞争,也让我不必记住每个属性返回的内容。但是,正如您在上面看到的,单独调用每个属性会导致一些重复计算。
那么,有没有一种优雅的(非哈希)方式,我可以只运行一次计算并分配两个值?我知道我可以在构造函数中调用一个函数并设置这些值。但是我没有预见到我每次实例化一个类时都需要这些值(因此使用了@property
)。
这是一个setter可能有用的地方吗?
你不需要方法或构造函数来定义类变量 –
同意。但是我没有一个简单的类变量。如果您看到第三行,则通过对实例化时设置的名为self.illarr的变量执行一些操作来计算该属性。 –