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

时间:2015-02-27 18:49:53

标签: python oop theory

所以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变大后是否存在性能差异?
  3. 我徘徊,因为有时候我想从一个方法中挑出一个在概念上独立于父方法的小任务;我觉得test2更像是OOP,但另一方面,如果班级中唯一使用doMore工作的方法是do我还可以保存一个成员变量吗?

1 个答案:

答案 0 :(得分:0)

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