0

我有以下一段代码,在某些时候我想初始化

具有行和列范围的对象。

当我打印它们时,我得到一个数字,据我所知

它应该适用于范围方法。

这是代码:

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.

我怎样才能操纵它工作?为什么这不起作用?

4

3 回答 3

1

您很可能将Board对象作为行或列传递,而不是整数。

印刷:

self.rows
self.columns
type(self.rows)
type(self.columns)

就在导致错误的行之前将有助于确认这一点,或者您可以发布您正在使用的调用 Board(rows,columns) 的代码吗?

于 2013-05-31T15:52:18.180 回答
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']]]

于 2013-05-31T15:59:19.150 回答
0

你的代码没有问题

你在实例化这个类吗?

b = Board(10, 10)
print b.arr
于 2013-05-31T15:59:57.880 回答