-2

我写了这个简单的代码,我认为它不包含语法错误但它不执行所以我认为这是一个逻辑错误:o,所以我需要帮助!有人可以救我吗?!:D

class NumberGenerator:
"""A simple class that contains functions to generate ranges of numbers"""

@classmethod
def generate(quantity, value=[]):
    while quantity: value.append(quantity) ; quantity -= 1
    return value

class Figure:
"""Abstract class for geometric figures"""

def init(self, name):
    """This is the constructor"""
    self._name = name

def name(self):
    return self._name

class Rectangle(Figure):
"""Rectangle figure"""

def init(self, width, height):
    Figure.__init__("rectangle")
    self._width = width
    self._height = height

def width(self):
    return self.width

def height(self):
    return self.height

def size(self):
    self.width() * self.height()

if __name__ == "__main__":
# We print the range(10,0,-1)
print NumberGenerator.generate(10)
# We print the range(20,0,-1)
print NumberGenerator.generate(20)

# We create a rectangle
r = Rectangle(10, 20)
print r.size()

# EOF
4

2 回答 2

4

除了缩进,这里有两个错误:

def width(self):
    return self.width

def height(self):
    return self.height

这应该是:

def width(self):
    return self._width

def height(self):
    return self._height

此外,应该调用构造函数__init__而不是init.

最后,该generate()方法有几个问题:

  • 您可能是想说@staticmethod而不是@classmethod(类方法应该采用隐式的第一个参数,而您的方法没有)。
  • 循环是不必要的(一个简单的range()调用就可以了)。
  • 该方法有一个微妙的错误,其中第二个参数 ( value) 在对generate(). 如果必须扩展value,请移至value = []方法的主体。
于 2012-05-15T09:00:33.463 回答
2

您的第一条错误消息AttributeError: 'int' object has no attribute 'append'来自NumberGenerator.generatenoself作为第一个参数,然后将变量创建quantityNumberGenerator.

一旦你解决了这个问题,你的下一个错误实际上init()应该是__init__(),一旦你解决了这个问题,你就会有另一个错误,但我会把这个练习留给你自己。

于 2012-05-15T09:03:21.453 回答