[对不起,我是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++中的引用),但我可以在语言中找不到任何类似于引用或指针的东西。如果我在每个包含一块的正方形中存储了一个列表,我可以这样做:board.square(0,0)[0] = piece - 但它看起来很疯狂(或者可能不是 - 正如我所说的,我是新来的语言)。
你会如何处理这个数据结构?
注意,定义在3.X稍微难看,因为元组参数列表拆包的特例去挪威蓝色的方式。你必须定义'def __setitem __(self,row_col,value):row,col = row_col; self.squares [row * 8 + col] = value'。 – delnan 2012-04-01 14:39:06
@delnan:谢谢,我改变了它,因为其余的版本是不可知的。我认为删除此功能的选择是不幸的,如果明智地使用它可能会非常有用。 – 2012-04-01 14:40:30
谢谢@尼克拉斯 – Uri 2012-04-01 18:19:04