python - 最好在 Python 中返回或更新对象属性?

标签 python optimization

我有一个带有更新其对象属性的函数的类。我想弄清楚哪个更 pythonic:我应该明确返回我正在更新的对象,还是简单地更新 self目的?

例如:

class A(object):

    def __init__(self):
        self.value = 0

    def explicit_value_update(self, other_value):
        # Expect a lot of computation here - not simply a setter
        new_value = other_value * 2
        return new_value

    def implicit_value_update(self, other_value):
        # Expect a lot of computation here - not simply a setter
        new_value = other_value * 2
        self.value = new_value
        #  hidden `return None` statement

if __name__ == '__main__':
    a = A()
    a.value = a.explicit_value_update(2)
    a.implicit_value_update(2)

我环顾四周,但没有看到任何明确的答案。

编辑:具体来说,我正在寻找可读性和执行时间。两种功能在任一类别中都有优势吗?

最佳答案

我认为第一种情况在任何语言中都不会被认为是好的。

尝试了解该方法的目的是什么。如果目的是修改对象的状态,那么一定要修改它。如果目的是为调用者提供有用的信息,则返回该值。

关于python - 最好在 Python 中返回或更新对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035688/

相关文章:

python - 从外部函数访问变量

optimization - 总结 Clojure 比率很慢

Laravel - Eloquent 多次删除与销毁数组

gcc 中的编译器优化

jquery - 来自 MySQL 数据库的谷歌地图的坐标,优化的正确方法?

python - 使用带有 cvxpy 语法的 python-mip 库

python - Python 的 KeyError 的惯用 Clojure 版本

python - 在二维二进制矩阵中找到岛屿的数量

c# - 使用 .NET 的反射 API 时内存类型元数据是否有效?

python - python中堆元素的比较顺序