dandan0523 发表于 2021-5-18 09:52:28

请教各位个小问题

class MyDes:
    def __init__(self, initval=None, name=None):
      self.val = initval
      self.name = name

    def __get__(self, instance, owner):
      print("正在获取变量:", self.name)
      return self.val

    def __set__(self, instance, value):
      print("正在修改变量:", self.name)
      self.val = value

    def __delete__(self, instance):
      print("正在删除变量:", self.name)
      print("噢~这个变量没法删除~")

class Test:
      x = MyDes(10, 'x')

>>> test = Test()
>>> y = test.x
正在获取变量: x   #为什么这里没有打印出10啊?不是调用描述符类中的__get__()方法吗?
>>> y
10         #这个为什么打印出10

逃兵 发表于 2021-5-18 10:00:11

y = test.x
这相当于一个赋值操作 ,y赋值了test.x的返回值
类似于你输入 y = 10 ,也不会打印10
但是你输入y的时候会返回10
页: [1]
查看完整版本: 请教各位个小问题