非常需要帮助完成python程序

时间:2011-09-27 06:09:34

标签: python

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

1 个答案:

答案 0 :(得分:4)

一些评论。

  1. 评论您的代码。特别是当你有错误时,对于外人来说,识别你的代码应该做什么可能很困难。

  2. 将“Component”参数大写为addComponent是不好的形式。对于类名使用大写字母,对参数名使用小写。这段代码就像你试图将类类型添加到addedComponents而不是类的实例一样。

  3. validCounter应该是Effort或实例变量的类变量吗?如果它是一个实例变量,请将其初始化放在init中。如果它是一个类变量,请将其称为Effort.validCounter,而不是self.validCounter。对于addedComponents和componentCounter也是如此。

  4. validCount是应该递增每次调用还是使用方法返回addedComponents的数量?假设后者,您不需要实例变量。无论哪种方式,您可能希望在for循环之前将validCounter重新初始化为0.