寄安 发表于 2021-8-15 17:32:33

魔方,描述符课后题

访问实例层次上的描述符 x,只会返回描述符本身。为了让描述符能够正常工作,它们必须定义在类的层次上。如果你不这么做,那么 Python 无法自动为你调用 __get__ 和 __set__ 方法

这个没看懂,大佬帮忙解释一下,咋有点😵那

Twilight6 发表于 2021-8-16 07:00:18


为了让描述符能够正常工作,它们必须定义在类的层次上。

就是描述符只能定义在类,甲鱼哥图中定义在类方法中,且赋值给了一个实例属性,那么 Python 就无法自动帮你调用描述符的 __get__ 和 __set__

你需要将 self.x = MyDes(3) 这个移到 类中,self 去掉,即在类所属范围 进行描述符的调用,即改成 x = MyDes(3) 且在 类中类方法外,而不是在类方法内

寄安 发表于 2021-8-16 09:38:24

Twilight6 发表于 2021-8-16 07:00
就是描述符只能定义在类,甲鱼哥图中定义在类方法中,且赋值给了一个实例属性,那么 Python 就无法自 ...

听的不太明白,可以直接说一下怎样才算正确的

寄安 发表于 2021-8-16 09:40:37

Twilight6 发表于 2021-8-16 07:00
就是描述符只能定义在类,甲鱼哥图中定义在类方法中,且赋值给了一个实例属性,那么 Python 就无法自 ...

是不是只要去掉self就可以了

Twilight6 发表于 2021-8-16 16:45:40

寄安 发表于 2021-8-16 09:40
是不是只要去掉self就可以了


是,并且把这个赋值操作方在类方法外

飞花落尽 发表于 2021-8-16 17:30:13

Twilight6 发表于 2021-8-16 16:45
是,并且把这个赋值操作方在类方法外

为什么?能解释下吗?

不弃_ 发表于 2022-3-16 21:47:32

OK i
懂了,在类层次上
页: [1]
查看完整版本: 魔方,描述符课后题