最好在Python中返回结果或直接修改

时间:2016-12-20 18:01:05

标签: python python-2.7

直接在方法中修改内部对象或从方法返回内容并在外部进行更改是否更好?

例如,此代码在内部进行更改,没有交换不必要的数据:

class A(object):
    def __init__(self):
        self.val = 0

    def increment(self):
        self.val = self.val + 1

a = A()
a.increment()
print(a.val)

相比之下,这段代码需要在外部进行更改:

class B(object):
    def __init__(self):
        self.val = 0

    def increment(self, operand):
        return operand + 1

b = B()
b.val = b.increment(b.val)
print b.val

如果increment()仅用于递增* .val,那么第一种方法在风格上是否更好(更加pythonic)?

为了记录,我使用的是python 2.7。

1 个答案:

答案 0 :(得分:1)

这实际上取决于您正在考虑的方法。在您显示的示例中,显然最好在方法中分配增量值,原因如下:

  1. 它将与函数
  2. 下的函数目标相关的所有代码分组
  3. 它使函数独立,这意味着如果对类进行了更改(例如将val更改为value),则使用该类的代码仍然有效
  4. 不会增加的增量函数不符合逻辑创建
  5. 为什么第一个例子更好,可能有更多的原因,但也许在另一个例子中,答案会有所不同。但通常,修改对象的变量应该可以从实例方法中完成。