Python类递归属性装饰器

时间:2021-05-09 03:22:04

标签: python class recursion properties decorator

我试图让 MaxNum 成为类 Node 的一个属性,但我得到了“最大递归深度超出”

class Node:
  def __init__(self, data=None):
    if data is None:
      data = []
    self.data = data
  
  @property
  def MaxNum(self, nlist=None):
    if nlist == None:
      nlist = self.data
    if len(nlist) == 1:
      return nlist[0]
    else:
      mx = self.MaxNum(nlist[1:])
      return mx if mx > nlist[0] else nlist[0]

  @property
  def MinNum(self):
    mn = self.data[0]
    for n in self.data:
      if n <= mn:
        mn = n
    return mn

def main():
  with open('random_numbers.csv', mode='r', encoding='utf-8-sig') as f:
    lst = [int(x) for x in f.read().split(",")]
  y = Node(lst)
  print(y.MinNum)
  print(y.MaxNum)
  return
  

if __name__ == "__main__":
  main()

单独使用 MaxNum 函数效果很好,但是当我添加装饰器时会产生错误:“超出最大递归深度”。

0 个答案:

没有答案