[Niestety, jestem nowy w Pythonie. Chociaż wydaje się to być bardzo podstawowym pytaniem, zrobiłem swój udział w należytej staranności, zanim zapytałem tę publiczność, starając się uniknąć naprawdę głupich pytań].Zwracanie wartości l z funkcji w pytonie
Próbuję znaleźć prawidłowy idiom dla zwracania wartości l z funkcji. Załóżmy, że mam kontener z 64 obiektami i chcę mieć możliwość zwrócenia odwołania do tych obiektów.
class ChessBoard:
def __init__(self):
self.squares = [None for x in range(64)]
square(row, col):
return self.squares(row*8+col) <---- I'd like this to be l-value
Następnie spoza klasy chcę:
board = ChessBoard()
board.square(0,0) = Piece(Shapes.ROOK, Colors.White) <-- I'm getting an error here
board.square(0,1) = Piece(Shapes.BISHOP, Colors.White)
... etc.
Więc chciałbym funkcję „at”, aby powrócić do lwartość (coś jak odniesienie w C++), ale mogę w tekście znajduje się coś przypominającego odnośnik lub wskaźnik. Jeśli zapisałem listę w każdym kwadracie zawierającym jeden element, możliwe jest, że mógłbym zrobić coś takiego: board.square (0,0) [0] = Piece - ale wydaje się szalone (a może nie - tak jak powiedziałem, Jestem nowy w tym języku).
Jak podchodzisz do tej struktury danych?
Należy zauważyć, że definicja jest nieco bardziej brzydkie w 3.x, ponieważ szczególny przypadek krotki rozpakowaniu na listach argumentów poszedł drogą Norweskiego błękitu.Będziesz musiał zdefiniować 'def __setitem __ (self, row_col, value): row, col = row_col; self.squares [wiersz * 8 + col] = wartość'. – delnan
@delnan: Dzięki, zmieniłem to, ponieważ reszta jest niezależna od wersji. Myślę, że wybór usunięcia tej funkcji jest niefortunny, może być bardzo przydatny, jeśli jest używany w sposób rozsądny. –
Dziękuję @Niklas – Uri