-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

インデントはさておき、ここに 2 つのエラーがあります。

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()呼び出しでうまくいきます)。
  • このメソッドには微妙なバグがあり、2 番目の引数 ( value) が の呼び出し間で保持されますgenerate()。を拡張する必要がある場合は、メソッドの本体にvalue移動します。value = []
于 2012-05-15T09:00:33.463 に答える
2

あなたの最初のエラーメッセージは、最初の引数としてno が原因でAttributeError: 'int' object has no attribute 'append'あり、変数を のインスタンスとして作成しています。NumberGenerator.generateselfquantityNumberGenerator

それを修正すると、次のエラーはinit()実際には であるはずであり__init__()、修正するとさらにエラーが発生しますが、その演習はあなた自身に任せます。

于 2012-05-15T09:03:21.453 に答える