更新对象状态的成员函数是否常规也返回值?

时间:2017-11-28 17:49:33

标签: python

我对Python中的return约定有疑问。我有一个具有一些data属性的类,我有几个函数对数据执行一些分析,然后将结果存储为results属性(请参阅下面的简化实现)。由于分析函数主要更新results属性,我的问题是return语句的最佳实践是什么。我应该避免更新函数内部的类属性(如process1中所述),只返回数据并使用它来更新结果属性(如process2中所述)?

谢谢, 卡姆兰

class Analysis(object):

    def __init__(self, data):
        self.data = data
        self.results = None

    def process1(self):
        self.results = [i**2 for i in self.data]

    def process2(self):
        return [i**2 for i in self.data]



a = Analysis([1, 2, 3])
a.process1()
a.results = a.process2()

1 个答案:

答案 0 :(得分:0)

这完全取决于用例。

首先,您没有更改那里的类属性。您正在更改实例属性。

Python: Difference between class and instance attributes

其次,如果您计划在类的各种实例之间共享您的进程的结果,那么您可以使用类变量。

第三,如果您询问实例变量,那么它取决于设计选择。

除此之外,我猜这是不必要的: -

a.results = a.process2()

您只是将分配作为对象本身的一部分。如果需要该功能,可以使用a.process2函数显示结果。