python中关于描述符类的问题

描述符 MyDes:当类的属性被访问、修改或设置的时候,分别做出提醒。

class Remind:
    def __init__(self,value=None,name=None):
        self.name=name
        self.val=value

    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)

期望的输出效果是

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

>>> test = Test()
>>> y = test.x
正在获取变量: x
>>> y
10
>>> test.x = 8
正在修改变量: x
>>> del test.x
正在删除变量: x
>>> test.x
正在获取变量: x
8

但是实际上的结果

图片说明

在set和del的时候都不打印内容这是为啥啊??

赋值后打印一下看看实例a的test是多少,我猜还是15

a.test = 45
print(a.test)

第一次看到描述符这个东西。
根据我现场找到的文章,45被赋值给C这个类,而不是a这个实例了。
解决方案是

class Desc:
    def __init__(self, value):
        self.value = value
    def __get__(self, ins, cls):
        return self.value
    def __set__(self, ins, value):
        self.value = value
    def __delete__(self, ins):
        raise AttributeError('not allowed to delete attribute name ' )

class A:
    name=Desc('JS')
a=A()

https://www.cnblogs.com/jessonluo/p/4758662.html