addcomponent()方法的“Component”参数是Component类的一个实例。简而言之,组件有2个参数;“Component(self,name,methodCount)”正如您在我的代码中看到的,我将每个组件添加到一个列表中。在validCount()中我需要做的是返回methodCount所在组件的数量!=0。根据我目前的数据,我的validCount()一直返回4,我不知道为什么。我已经调试过它,但仍然看不到4的来源;特别是当我将它初始化为0时。你能指出我做错了什么吗?我尝试过对有0个methodCounts和没有0个methodCounts的组件进行计数,但是这些数字都没有正确返回。整个程序有三个类,但这里就是我遇到麻烦的一个。(如果需要,我可以发布完整的cod):
class Effort(Component):
addedComponents = []
componentCounter = 0
validCounter = 0
def __init__ (self):
return None
def addComponent(self, Component):
try:
if (self.addedComponents.count(Component) != 0):
raise ValueError
else:
self.addedComponents.append(Component)
self.componentCounter = self.componentCounter + 1
return self.componentCounter
except ValueError:
raise ValueError("Duplicate component")
def count(self):
return self.componentCounter
def validCount(self):
if (len(self.addedComponents) == 0):
return self.validCounter
else:
for i in self.addedComponents:
if (i.getMethodCount() == 0):
pass
else:
self.validCounter = self.validCounter + 1
return self.validCounter
一些评论。在
注释代码。尤其是当你有错误的时候,对于局外人来说,辨别代码应该做什么是很困难的。
将“Component”参数大写为addComponent是一种错误的形式。类名使用大写字母,参数名称使用小写字母。这段代码读起来像是在尝试将类类型添加到addedComponents,而不是类的实例。
validCounter应该是efforce的类变量还是实例变量?如果它是一个实例变量,将它的初始化放在init中。如果它是类变量,请将其称为努力.有效计数器,不是自我验证计数器. 对于addedComponents和componentCounter也是一样的。
validCount应该递增每次调用还是返回addedComponent的数量?假设是后者,则不需要实例变量。不管怎样,您可能希望在for循环之前将validCounter重新初始化为0。
相关问题 更多 >
编程相关推荐