我对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()
答案 0 :(得分:0)
这完全取决于用例。
首先,您没有更改那里的类属性。您正在更改实例属性。
Python: Difference between class and instance attributes
其次,如果您计划在类的各种实例之间共享您的进程的结果,那么您可以使用类变量。
第三,如果您询问实例变量,那么它取决于设计选择。
除此之外,我猜这是不必要的: -
a.results = a.process2()
您只是将分配作为对象本身的一部分。如果需要该功能,可以使用a.process2函数显示结果。