Я купил введение в книгу Python от Джона В. Гуттага, и я пытаюсь научить себя python. По большей части это прилично, но у меня есть вопрос, о котором не говорится в книге. Последняя часть рассказала о моделировании проложенной ходьбы. В симуляции он использует класс поля для создания поля для пьяного, чтобы войти. Затем он создает другой вид поля, используя наследование. Мне было интересно, что нужно сделать, чтобы оградить поле, которое ограничило бы пьяного от края, а затем пьяного, чтобы развернуться. Вот код поля:Как создать огороженное поле для пьяной прогулки
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 drunk not 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 drunk not in self.drunks:
raise ValueError('Drunk not in field')
return self.drunks[drunk]
и вот другое поле он сделал с помощью наследования:
class oddField(Field):
def __init__(self, numHoles, xRange, yRange):
Field.__init__(self)
self.wormholes = {}
for w in range(numHoles):
x = random.randint(-xRange, xRange)
y = random.randint(-yRange, yRange)
newX = random.randint(-xRange, xRange)
newY = random.randint(-yRange, yRange)
newLoc = Location(newX, newY)
self.wormholes[(x, y)] = newLoc
def moveDrunk(self, drunk):
Field.moveDrunk(self, drunk)
x = self.drunks[drunk].getX()
y = self.drunks[drunk].getY()
if (x, y) in self.wormholes:
self.drunks[drunk] = self.wormholes[(x, y)]
нечетного поле использует wormwholes для перемещения пьяного, который является довольно прохладно. Я все еще новичок в python, поэтому мне интересно, как это будет работать.
Не могли бы вы быть более точным с вопросом, что именно вам интересно действительно ли это 'метод moveDrunk' в подклассе' oddField', что вы интересуются? –
Действительно ли так сложно правильно отложить код? Я бы исправил это для вас, но в последний раз, когда я сделал что-то вроде этого, мое редактирование было отклонено, и я могу понять, почему, я не могу быть уверенным в ваших намерениях. – Goyo
Да, я сожалею об этом. Я не понимал, что он не отступил должным образом. –