【问题标题】:Setting a member variable VS returning a value from a method设置成员变量 VS 从方法返回值
【发布时间】:2015-04-30 14:02:52
【问题描述】:

所以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 更OOP,但另一方面,如果类中使用doMore 工作的唯一方法是do,我还不如保存一个成员变量?

【问题讨论】:

  • 没有test1

标签: python oop theory


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多