class 方法的 return 变量是否应该存储在 class 本身中?

should a return variable of a class method be stored in the class itself or not?

这个问题的答案可能要视具体情况而定,反正我也没有什么高明的想法,所以我觉得还是post这里吧。

假设我们有一个 class 如下图所示。代码使用 Python,但也可以使用任何其他 OO 语言。

class Dashboard():
def __init__(self, length_dashboard):
    self.length = length_dashboard

# create dashboard with month codes
def create_dashboard(self):
    db = ['']*self.length
    db[0] = foo()
    for item in range(1, self.length-1):
        db[item] = bar(item-1)
    return db

这是好的编码风格吗?还是锁定实例变量之一中的 return 值更好?:

class Dashboard():
def __init__(self, length_dashboard):
    self.length = length_dashboard
    self.db

# create dashboard with month codes
def create_dashboard(self):
    self.db = ['']*self.length
    self.db[0] = foo()
    for item in range(1, self.length-1):
        self.db[item] = bar(item-1)
    return self.db

我想这个问题真的只是在问,我应该把 db 设为 class 变量吗?

在这种特定情况下,我认为您应该这样做。您的 class 称为 Dashboard,因此它可能代表某种仪表板。将仪表板显示的数据存储在对象内部(对象状态的一部分)是有意义的,对吗?

此外,我认为您应该在 __init__ 中调用 create_dashboard,因为当您初始化 Dashboard 时,您会希望它填充一些默认数据,对吗?

如果 db 不是 class 变量,您的 class' 名称将是“DashboardCreator”,因为它所做的只是创建可以显示的仪表板一定大小的数据。