addCompnent()方法的“Component”参数是组件类的实例。简而言之,Component有2个参数; “组件(self,name,methodCount)”正如您在我的代码中看到的,我将每个组件添加到列表中。我需要在validCount()中做的是返回methodCount!= 0的组件数。从我目前的我的validCount()继续返回4,我不知道为什么。我调试了它,仍然没有看到4来自哪里;特别是当我把它初始化为0.你能指出我做错了吗?我已经尝试计算具有0 methodCounts且没有0 methodCounts的组件,但这两个数字都没有正确返回。整个计划有三个班级,但这里只是我遇到麻烦的一个班级。 (如果需要,我可以发布完整的鳕鱼):
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
答案 0 :(得分:4)
一些评论。
评论您的代码。特别是当你有错误时,对于外人来说,识别你的代码应该做什么可能很困难。
将“Component”参数大写为addComponent是不好的形式。对于类名使用大写字母,对参数名使用小写。这段代码就像你试图将类类型添加到addedComponents而不是类的实例一样。
validCounter应该是Effort或实例变量的类变量吗?如果它是一个实例变量,请将其初始化放在init中。如果它是一个类变量,请将其称为Effort.validCounter,而不是self.validCounter。对于addedComponents和componentCounter也是如此。
validCount是应该递增每次调用还是使用方法返回addedComponents的数量?假设后者,您不需要实例变量。无论哪种方式,您可能希望在for循环之前将validCounter重新初始化为0.