所以test
和test2
完成相同的事情,但前者通过返回一个值而后者通过设置成员变量来实现。
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
val
变大后是否存在性能差异?我徘徊,因为有时候我想从一个方法中挑出一个在概念上独立于父方法的小任务;我觉得test2
更像是OOP,但另一方面,如果班级中唯一使用doMore
工作的方法是do
我还可以保存一个成员变量吗?
答案 0 :(得分:0)
他们不做同样的事情。在test
中,doMore
的结果是短暂的;一旦它被打印,它就消失了。但是在test2
中,该值是对象的一部分,并且仍然是其中的一部分。因此,如果您在打印后不需要该值,请使用test
;如果你这样做,请使用test2
。