设置成员变量 VS 从方法返回值

Setting a member variable VS returning a value from a method

所以testtest2做的事情完全一样,只不过前者是返回一个值,后者是设置一个成员变量。

class test:
    def __init__(self):
        pass

    def do(self):
        val = self.doMore(5)
        print val

    def doMore(self, _v):
        return _v * _v


class test2:
    def __init__(self):
        pass

    def do(self):
        self.doMore(5)
        print self.val

    def doMore(self, _v):
        self.val = _v * _v
  1. 哪一个是正确的方法,为什么?
  2. val 变大时是否有任何性能差异?

我在徘徊,因为有时我想从一个方法中挑出一个概念上独立于父方法的较小任务;我觉得 test2 更面向对象,但另一方面,如果 class 中使用 doMore 的唯一方法是 do,我不妨保存一个成员变量?

他们做同样的事情。在 test 中,doMore 的结果是短暂的;一旦打印出来,它就消失了。但在 test2 中,该值是对象的一部分,并且一直是对象的一部分。因此,如果打印后不需要该值,请使用 test;如果这样做,请选择 test2.