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
”,因为它所做的只是创建可以显示的仪表板一定大小的数据。
这个问题的答案可能要视具体情况而定,反正我也没有什么高明的想法,所以我觉得还是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
”,因为它所做的只是创建可以显示的仪表板一定大小的数据。