【发布时间】:2017-09-23 16:51:38
【问题描述】:
这个问题的答案可能取决于具体情况,但由于我对此没有聪明的想法,所以我认为将其发布在这里会很好。
假设我们有一个像下面这样的类。代码使用 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
【问题讨论】:
-
我认为这更多地与应该将其设为实例字段有关,而不是与返回有关。回归对这个问题有什么意义吗?
-
不,问题是变量是否应该是类变量..
-
请修正缩进。
-
@Svalbard 我认为没有明确的答案,或者至少部分基于意见。不过,再次查看您的代码,
db对象似乎是Database类的全部要点。如果db不是实例字段,那么您的整个Database类似乎只是一个包装了产生dbs 的工厂方法的类。create_dashboard也可能是一个松散的功能。如果您确实将其设为实例字段,则最好将该方法设为构造函数,除非您需要延迟对象的创建。 -
哦,我同意。这个类定义没有多大意义——我已经从示例中删除了其他类方法。
标签: python oop object scope coding-style