0

ここに私がPythonで得たいくつかのコードがあります.Pythonでクラスの文字列メソッドを出力する方法について行き詰まっています...できれば助けてください...たくさん...

コードは以下です!

class Rat:
    """ A rat caught in a maze. """

    # Write your Rat methods here.
    def __init__(Rat, symbol, row, col):
        Rat.symbol = symbol
        Rat.row = row
        Rat.col = col

        num_sprouts_eaten = 0

    def set_location(Rat, row, col):

        Rat.row = row
        Rat.col = col

    def eat_sprout(Rat):
        num_sprouts_eaten += 1        

    def __str__(self):
        """ (Contact) -> str

        Return a string representation of this Rat.
        """
        result = 'To: '
        for contact in Rat.symbol:
            result = result + '{0}, '.format(Rat.symbol)

        result = result + '\nSubject: {0}'.format(Rat.row)
        result = result + '\n{0}'.format(Rat.col)
        return result
        #return '{0} {1} <{2}>'.format(Rat.symbol, 
         #   Rat.row, Rat.col)

Rat の文字列表現を返す方法を知る必要があります!

ラットの文字列表現を次の形式で返します: symbol at (row, col) ate num_sprouts_eaten sprouts.

例: 「(4, 3) の J は 2 つのもやしを食べました。」文字列の最後に改行文字 ('\n') を入れないでください。

では、最後の方法をどのように修正しますか?

  def __str__(self):
            """ (Contact) -> str

            Return a string representation of this Rat.
            """
            result = 'To: '
            for contact in Rat.symbol:
                result = result + '{0}, '.format(Rat.symbol)

            result = result + '\nSubject: {0}'.format(Rat.row)
            result = result + '\n{0}'.format(Rat.col)
            return result
            #return '{0} {1} <{2}>'.format(Rat.symbol, 
             #   Rat.row, Rat.col)

「J at (4, 3) ate 2 もやし」のようなものを出力する必要があります。ただし、上記のコードでは、print(object) と入力するとエラーが発生します...次のエラーが発生します。

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    print(a)
  File "C:\Users\gijoe\Downloads\a2.py", line 61, in __str__
    for contact in Rat.symbol:
AttributeError: class Rat has no attribute 'symbol'
4

1 に答える 1

0

関数の最初の引数はオブジェクト自体を表し、定義

def __str__ (self):

あなたはそれを呼んだself。したがって、関数AttributeError内の, を回避するには、 in に__str__置き換える必要があります。Rat.symbolself.symbol

于 2013-05-01T10:19:24.507 に答える