例如,我得到一个名为stack
的类
class stack: #Will be used for probable files!
def __init__(self):
self.data = []
def add(self, element):
self.data.append(element)
def number_of_elements(self):
return len(self.data)
def stackType(self):
if self.number_of_elements == 0:
return 0
elif self.number_of_elements == 1:
return 1
else:
return -1
然后我会这样做:
foo = stack()
print foo.stackType()
我得到了-1
,但是我期望返回1
为什么会这样?我该怎么处理
这是因为您没有调用调用方法
self.number_of_elements
;您只需测试它是否等于0
或1
使用以下语法修改代码以实际调用方法:
self.number_of_elements()
[注意使用()
来调用方法]:你也可以这样写:
这将是一种改进,因为
number_of_elements()
将只调用一次。在您的代码中,该方法可以被调用两次。我重命名了该函数,使之与PEP8中规定的Python方法命名约定一致因为
self.number_of_elements
和self.number_of_elements()
不一样前者是对函数的引用,后者是对实际计算堆栈长度的函数的调用
元素的self.number\是一个函数,所以它的值既不是0也不是1
相关问题 更多 >
编程相关推荐