Python代码超过了最大递归深度

时间:2018-01-18 19:30:37

标签: python class recursion

我是python的新手,我正在测试。

当我运行以下代码时,错误消息“RecursionError:超出最大递归深度”

names = ['G','K']

class test(object):

    def __init__(self, names):
        self.players = []
        for name in names:
            player = test(name)
            self.players.append(player)
        print(self.players)

G = test(names)

谁能告诉我出了什么问题以及如何解决? 非常感谢!!!

3 个答案:

答案 0 :(得分:0)

每次调用test时,都会在内部再次调用test。

这种情况一直持续到计算机没有更多的空间来容纳理论上你要求的无限测试版本。

答案 1 :(得分:0)

正如其他人所指出的,每次创建testplayer = test(name)的新实例时,都在调用test,从而实现无限递归。相反,只需为每个名称创建一个不同类实例的列表,大概是collections.namedtuple

import collections
class test(object):
   def __init__(self, names):
      player = collections.namedtuple('player', 'name')
      self.players = list(map(player._make, names))

names = ['G','K']
G = test(names)
for player in G.players:
   print(player.name)

答案 2 :(得分:0)

谢谢你@ Ajax1234,你的方式有效。

我是从Michael Dawson的初学者蟒蛇那里学习的,并试图从他的代码中学习。

实际上,我只需要使用player = name而不是player = test(name)

感谢大家快速掌握