我试图通过在python中创建某种国际象棋克隆来提醒自己OO编程,并发现自己当前的问题。
我想在棋盘上给每个棋子一个'标识符'变量,以便它可以显示在屏幕上,例如:bR表示黑车。但是我并不是因为颜色是一个继承到车类的变量而不是它的一部分而我如何建立它。
这可能是一个愚蠢的问题,但我也考虑过使用__str__函数进行此显示,但我也遇到了类似的问题。我的代码如下。
我可以使用另一个__init__变量,但是当pawn类对我来说肯定会做同样的事情时,我宁愿不必指定每一个pawns标识符(P)?
class piece(object):
identifier = ' '
def __init__(self, colour):
self.colour = colour
class rook(piece):
identifier = 'R'
rookA = rook('b')
我正在寻求实现:
print(rookA.identifier)
"bR"
或
print(rookA)
"bR"
如果我以错误的方式执行此任务,请提出替代方案!
由于
答案 0 :(得分:1)
我不确定使用__str__
时遇到了什么问题,但这绝对是正确的方法。
class Piece(object):
identifier = ' '
def __init__(self, colour):
self.colour = colour
def __str__(self):
return "{}{}".format(self.colour, self.identifier)
答案 1 :(得分:1)
通过定义__str__
,在piece
上定义并返回self.colour + self.identifier
来尝试获取所需的价值是没有问题的:
def __str__(self):
return self.colour + self.identifier
现在,当您打印rook
的实例时,您将获得所需的结果:
print(rookA)
bR