我正在尝试定义一个类的对象变量,以便它是一个元组,如下所示:
class MyClass(object):
def __init__(self):
self.results = ? # tuple
def generate_results(self, a):
# tuple to hold the 3 result integers
self.results = (self.calculate_first_result(a),
self.calculate_second_result(a),
self.calculate_third_result(a))
(calculate_first_result
,calculate_second_result
和calculate_third_result
是MyClass
的静态方法,执行某些计算并返回int
)
我不明白应该如何定义self.results
__init__
,以便它保存带有3个整数的元组,因为它是在{{1}中计算的方法。
我是Python中的类和对象变量概念的新手,因此我的设计和方法中的任何缺点都将受到赞赏。
答案 0 :(得分:2)
您可以选择代码:
def __init__(self):
self.results = ()
如果我仅根据您的代码判断,我可能会说这不重要,因为在generate_results()
内你覆盖了self.results
。
如果您需要对程序中的其他需求进行跟踪,则仅初始化空元组非常有用,否则不会。
以下代码总结了我所说的内容:
class Begueradj:
def __init__(self):
self.results = ()
def generate_results(self):
self.results = (1,2,3)
print ' inside generate_results(): '+str(self.results)
def display(self):
print ' inside display(): '+str(self.results)
# Main program starts here
if __name__ =='__main__':
b = Begueradj()
b.display() # This line will not work if you do not run self.results = () inside __init__()
b.generate_results()
b.display()
如果您不需要跟踪self.results,在我们的代码示例中意味着您不需要在display()
方法之前调用generate_results()
,那么这将引导我们 @ juanpa.arrivillaga 评论你:我的意思是,初始化空元组会变得毫无用处。下面的代码反映了这种情况:
class Begueradj:
def __init__(self):
# Do not do anything
# We do not need to keep a track of self.results
pass
def generate_results(self):
self.results = (1,2,3)
print ' inside generate_results(): '+str(self.results)
def display(self):
print ' inside display(): '+str(self.results)
# Main program starts here
if __name__ =='__main__':
b = Begueradj()
# b.display() you can no longer call display() here as we did not initialize self.results inside __init__
b.generate_results()
b.display()