爱笑的无赖 发表于 2022-5-18 17:00:58

魔法方法的无线递归的问题

看了魔法方法的视频, 认识到, 在设定属性值的方法里设定属性值会陷入无线递归,如下例:
class Test:
    def __setattr__(self, name, value):
      self.name = value + 1    #会无限递归

那么为啥描述符这课里的同样套路不会无线递归啊?{:10_266:}已经蒙圈了。
class MyDes:
    def __init__(self,value , name ):
      self.value = value
      self.name = name
   
    def __get__(self, instance, owner):
      print(f'正在获取变量:{self.name}')
      return self.value
   
    def __set__(self, instance, value):
      print(f'正在修改变量:{self.name}')
      self.value = value   #为什么不会无限递归
   
    def __delete__(self, instance):
      print('哦! 这个变量没法删除')


是我的认知逻辑出错了吗?
页: [1]
查看完整版本: 魔法方法的无线递归的问题