应该将类方法的返回变量存储在类本身中吗?

时间:2017-09-23 16:51:39

标签: python oop object scope coding-style

这个问题的答案可能取决于确切的情况,但由于我无论如何都没有聪明的想法,我认为将其发布在这里会很好。

假设我们有一个类,如下面的部分。代码在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

这是一种很好的编码风格吗?或者在实例的一个变量中锁定返回值是否更好?:

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

1 个答案:

答案 0 :(得分:0)

我想这个问题真的只是问,我应该让db成为一个类变量吗?

在这个具体案例中,我认为你应该这样做。您的类名为Dashboard,因此它可能代表某种仪表板。存储仪表板在对象内部显示的数据(对象状态的一部分)是否有意义,对吗?

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

如果db不是类变量,那么您的类名称将为“DashboardCreator”,因为它只是创建可以显示特定大小数据的仪表板。