0
class Field(object):

    def __init__(self):
        self.drunks = {}

    def addDrunk(self, drunk, loc):
        if drunk in self.drunks:
            raise ValueError('Duplicate drunk')
        else:
            self.drunks[drunk] = loc

    def moveDrunk(self, drunk):
        if not drunk in self.drunks:
            raise ValueError('Drunk not in field')
        xDist, yDist = drunk.takeStep()
        currentLocation = self.drunks[drunk]
        #use move method of Location to get new location
        self.drunks[drunk] = currentLocation.move(xDist, yDist)

    def getLoc(self, drunk):
        if not drunk in self.drunks:
            raise ValueError('Drunk not in field')
        return self.drunks[drunk]


    import random


def walk(f, d, numSteps):
    start = f.getLoc(d)
    for s in range(numSteps):
        f.moveDrunk(d)
    return(start.distFrom(f.getLoc(d)))

私は python.I を学んでいます。私はこのコードを見ましたが、なぜ walk 関数が moveDrunk() メソッドを使用できるのか理解できませんでしたか? moveDrunk() は Field クラスのものであるため、エラーを発生させるべきではありませんか?

4

1 に答える 1

0

Fieldクラスのインスタンス( f) を引数として渡します。

def walk(f, d, numSteps):
         ^
于 2013-02-19T05:36:35.657 に答える