checkily 发表于 2018-3-1 00:41:57

python 46课,关于描述符的问题,求解。

本帖最后由 checkily 于 2018-3-1 09:25 编辑

class myDes:

    def __init__(self,value=None,name=None):
      self.val=value
      self.name=name
   
    def __get__(self,instance,owner):
      print('正在获取变量:%s' % self.name)
      return self.val

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

    def __delete__(self,instance):
      print('正在删除变量:%s' % self.name)
      if self.name=='x':
            print('噢~这个变量没法删除~')
      else:
            del self.name
            
class Test:
    x=myDes(10,'x')

test=Test()

如果输入test.y=5,可以添加y的属性,也可以获取到y的值,但并不会打印相关操作的内容,要怎样改才能显示后面添加的属性呢?

南城顾她 发表于 2018-3-1 08:55:56

最后那句话写的有瑕疵 没看懂如果输入test.y=5,可以添加y的属性,也可以获取到y的值,但并不会打印相关操作的内容,要怎样改才能显示后面添加的属性呢?这个y是左边啊来个y=5?

checkily 发表于 2018-3-1 09:25:10

我贴运行的图吧,刷新一下

checkily 发表于 2018-3-1 09:27:14

南城顾她 发表于 2018-3-1 08:55
最后那句话写的有瑕疵 没看懂如果输入test.y=5,可以添加y的属性,也可以获取到y的值,但并不会打印相关操 ...

贴了结果的截图

南城顾她 发表于 2018-3-1 14:58:28

你的y没有定义你那样改只不过是给test.y赋值为5,结果自然就是5

南城顾她 发表于 2018-3-1 14:59:43

你改x=myDes(10,'x') 这个值或者重新定义一个对象然后输出
页: [1]
查看完整版本: python 46课,关于描述符的问题,求解。