[残念ながら、私はPythonで新しいです。それは非常に基本的な質問であるように見えますが、私はこの聴衆に尋ねる前に、本当にばかげた質問を避けようと、正当な勤勉をしました。Pythonの関数から左辺値を返す
私は関数からl値を返すための正しいイディオムを理解しようとしています。 64個のオブジェクトのコンテナがあり、これらのオブジェクトへの参照を返すことができるようにしたいと考えています。
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
その後、私がしたいクラスの外から:だから
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.
、私は(C++での参照のようなもの)左辺値を返す「での」関数をしたいと思いますが、私はすることができます言語内の参照やポインタに似ているものは見つかりません。私がリストを1つのピースを含む各正方形に格納した場合、私は次のようなことをすることができます:board.square(0,0)[0] = Piece - それは狂っているかもしれません私はその言語に新しい)。
どのようにこのデータ構造にアプローチしますか?
注意。'def __setitem __(self、row_col、value)を定義する必要があります:row、col = row_col; self.squares [row * 8 + col] = value'です。 – delnan
@delnan:ありがとう、残りはバージョンに依存しないので変更しました。私はこの機能を削除する選択肢が残念だと思います。 –
ありがとうございます@Niklas – Uri