微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python类递归属性装饰器

如何解决Python类递归属性装饰器

我试图让 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 函数效果很好,但是当我添加装饰器时会产生错误:“超出最大递归深度”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。