小编dav*_*345的帖子

计算属性(如果不存在)

我试图访问不应该在__init__我的类的方法中创建的属性,但可以通过调用另一个方法来计算.我试图这样做,如果我尝试访问该属性,它不存在,它将自动计算.但是,如果属性确实存在,即使值不同,我也不希望重新计算它.例如:

class SampleObject(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def calculate_total(self):
        self.total = self.a + self.b

sample = SampleObject(1, 2)
print sample.total   # should print 3
sample.a = 2
print sample.total   # should print 3
sample.calculate_total()
print sample.total   # should print 4
Run Code Online (Sandbox Code Playgroud)

到目前为止,我最好的解决方案是创建一个get_total()方法来完成我需要的工作.

class SampleObject2(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def calculate_total(self):
        self.total = self.a + self.b

    def get_total(self):
        if hasattr(self, 'total'):
            return self.total
        else:
            self.calculate_total()
            return self.total

sample2 …
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
1
解决办法
1579
查看次数

标签 统计

python ×1