Python在类中使用方法

2024-04-23 10:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一些代码来生成一个数字列表。我刚开始学习python类。我很肯定这是我能做的,但我想我只是不明白问题是要我做什么。所以我应该有一个私有的实例变量来表示数字的行和列(表示为列表列表)。你知道吗

例如board = SlidingPuzzle(3, 4)

这将创建以下列表:

[[0,1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11]]

class SlidingPuzzle:
    def __init__(self, numRows, numCols):
        self.__numRows = numRows
        self.__numCols = numCols

        outerList = []
        num = -1

        for i in range(__numRows):
            innerList = []
            for j in range(__numCols):
                num = num + 1
                list.append(num)
            outerList.append(innerList)

        return outerList

Tags: 实例代码inself列表forrange数字
2条回答

您的问题描述特别指出:

I'm supposed to have a private instance variable representing rows and columns of numbers (represented as a list of lists).

创建这样一个列表,但不是将其存储在私有实例变量中,而是试图return它。您只需更改最后一行:

return outerList

…至:

self._board = outerList

更一般地说:__init__函数从不return的东西。调用者只是在写puzzle = SlidingPuzzle(),所以它唯一得到的是你的self实例,而不是你试图return给它的任何东西。__init__的要点是让您将值存储在属性中,以供以后的方法使用。这就是为什么你的任务要求你这么做。你知道吗

所以通常类都有类似于初始化器(__init__(...))的方法,但是初始化器不应该返回任何东西(实际上是返回这个类的实例),所以我添加了另一个函数getrows(),它(我认为)将执行您尝试过的操作。你应该考虑学习一点python——只需在google上“learnpython”,然后尝试一门你可以在浏览器中完成的课程,比如codecadamy

class SlidingPuzzle:
    def __init__(self, numRows, numCols):
        self.__numRows = numRows
        self.__numCols = numCols
        self._board = []
        outerList = []
        num = -1
    def get_rows_but_dont_return_them(self):
        for i in range(self.__numRows):
            innerList = []
            for j in range(self.__numCols):
                num = num + 1
                list.append(num)
            outerList.append(innerList)

        self._board = outerList
        # return outerList # uncomment this line to return the rows 
                         # which isn't in your question ;p

那就试着打电话 foo = SlidingPuzzle() 初始化

这能回答你的问题吗?你知道吗

相关问题 更多 >