当我在一个类对象中编写两个函数时,为什么python会返回错误

时间:2017-02-12 23:10:46

标签: python-2.7

我的代码是:

class Solution(object):

    def getRow(self, rowIndex):
        """
        :type rowIndex: int
        :rtype: List[int]
        """
        if rowIndex == 0:
            return [1]
        elif rowIndex == 1:
            return [1, 1]
        else:
            ini_row = [1, 2, 1]

            def GenNextRow(ini_row):
                return map(lambda x, y: x+y, [0] + ini_row, ini_row + [0])

            while len(ini_row) < rowIndex+1:
                ini_row = GenNextRow(ini_row)

            return ini_row

    def getRow2(self, rowIndex):
        result = [0] * (rowIndex + 1)
        for i in xrange(rowIndex + 1):
            old = result[0] = 1
            for j in xrange(1, i+1):
                old, result[j] = result[j], old + result[j]
        return result

if __name__ == '__main__':
    import time
    start_time = time.time()
    result = Solution().getRow2(4)
    end_time = time.time()
    print 'result: {0}'.format(result)
    print 'time: {0}'.format(end_time-start_time)

然而,当我从终端运行它时,我收到一条错误消息:

  

追踪(最近的呼叫最后):
    文件“array-Pascal's_Triangle2.py”,第46行,中       result = Solution()。getRow2(4)
  AttributeError:'Solution'对象没有属性'getRow2'

然后我尝试注释第一个函数getRow()Solution.getRow2()成功运行...

1 个答案:

答案 0 :(得分:0)

你需要在类外部移动GenNextRow函数,因为Python不理解为什么类中有一个严重缩进的方法。这样做:

 def GenNextRow(ini_row):
                return map(lambda x, y: x+y, [0] + ini_row, ini_row + [0])

 class Solution(object):
    [...]