Это будет простой вопрос, так что вам не потребуется много времени, чтобы объяснить это мне, но это поможет мне (и, возможно, другим людям тоже) понять что-то о классах и методах и Python.экземпляр не имеет атрибута '__len__'
Мой код хочет представить настольную игру на этом уровне только на доске с N отверстиями в строке, которая может вмещать мрамор, пронумерованный от 0 до N-1 (в случайном порядке).
class MarblesBoard:
'''define the board game'''
def __init__(self, Board):
self._Board = Board
self._n = len(Board)
'''first type of move available: switch the first two marbles'''
def switch(Board):
Board[0], Board[1] = Board[1], Board[0]
return Board
'''second type of move available: move all the marbles by 1 space to the left'''
def rotate():
temp = Board[0]
for i in range (0, n-1):
Board[i] = Board[i+1]
Board[n-1] = temp
return Board
'''print the state'''
def __repr__(Board):
for i in range(0, len(Board)):
print self[i],
'''rest to be developed when this works'''
сейчас, я проверяю отображение доски и перемещение мрамора. Так что пусть
First = MarblesBoard([1,2,3,4])
First.rotate
и получить только
<repr(<instancemethod at 0x104230410>) failed: AttributeError: MarblesBoard instance has no attribute '__len__'>
Я знаю, что уже подобный вопрос об этом сообщении об ошибке. AttributeError: Entry instance has no attribute '__len__'
Я все еще как-то не вижу, как возникает одна и та же ошибка в моем коде. Не могли бы вы объяснить (в общем), когда установлен атрибут «len» и, может быть, предложите, как это можно сделать в этом коде?
Вам нужно 'def __repr __ (self): для i в диапазоне (0, len (self._Board)): print i' Метод' __repr__' должен находиться в вашем классе 'Board'. Далее каждый из методов 'switch',' rotate' должен быть определен как 'switch (self)', 'rotate (self)' и работать на 'selfBoard' – linuxfan
Я не понимаю, почему вы пытаетесь получить доступ 'len' на классе. Разве вы не должны использовать экземпляр? Кроме того, не должны ли все методы класса быть соответствующим образом отступом из инструкции 'class MarblesBoard:'? –