设置成员变量 VS 从方法返回值
Setting a member variable VS returning a value from a method
所以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
更面向对象,但另一方面,如果 class 中使用 doMore
的唯一方法是 do
,我不妨保存一个成员变量?
他们不做同样的事情。在 test
中,doMore
的结果是短暂的;一旦打印出来,它就消失了。但在 test2
中,该值是对象的一部分,并且一直是对象的一部分。因此,如果打印后不需要该值,请使用 test
;如果这样做,请选择 test2
.
所以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
更面向对象,但另一方面,如果 class 中使用 doMore
的唯一方法是 do
,我不妨保存一个成员变量?
他们不做同样的事情。在 test
中,doMore
的结果是短暂的;一旦打印出来,它就消失了。但在 test2
中,该值是对象的一部分,并且一直是对象的一部分。因此,如果打印后不需要该值,请使用 test
;如果这样做,请选择 test2
.