我有以下代码,在某些方面我想初始化
具有行和列范围的对象。
当我打印它们时,我会得到一个数字,这意味着据我所知
它应该适用于范围方法。
以下是代码:
class Board(object):
def __init__(self, rows, columns):
#small values
if rows < 1 or columns < 2:
SizeOutOfBoundException
#large values
if rows > 20 or columns > 50:
SizeOutOfBoundException
self.rows = rows;
self.columns = columns;
self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)] # <- ERROR
但这是我不断得到的错误:
self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)]
TypeError: range() integer end argument expected, got Board.
我如何操纵它才能工作?为什么这不起作用?
答案 0 :(得分:1)
您很可能将Board
对象作为行或列传递,而不是整数。
印刷:
self.rows
self.columns
type(self.rows)
type(self.columns)
在导致错误的行之前有助于确认这一点,或者你可以发布你正在使用的代码调用Board(行,列)吗?
答案 1 :(得分:1)
这对我有用。你确定问题不是缩进可能吗?您的构造函数没有正确缩进。
class Board(object):
def __init__(self, rows, columns):
#small values
if rows < 1 or columns < 2:
raise SizeOutOfBoundException
#large values
if rows > 20 or columns > 50:
raise SizeOutOfBoundException
self.rows = rows
self.columns = columns
self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)]
myboard = Board(3,4)
print myboard.arr
输出结果为:
[[[0,'H'],[0,'H'],[0,'H']],[[0,'H'],[0,'H'],[0, 'H']],[[0,'H'],[0,'H'],[0,'H']],[[0,'H'],[0,'H'],[ 0,'H']]]
答案 2 :(得分:0)