鱼C论坛

 找回密码
 立即注册
查看: 2249|回复: 9

求助第47课关于描述符的问题呀

[复制链接]
发表于 2020-2-6 18:24:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
快被自己蠢哭了
已经在颅内脑补了一个小时也没i想明白
来求助大佬了
class Myproperty:
    def__init__(self,fget=None,fset=None,fdel=None):
        self.fget=fget
        self.fset=fget
        self.fdel=fget
    def__get__(self,instance,owner):
        return self.fget(instance)
    def__set__(self,instance,value):
         return self.fset(instance,value)
    这里的return self.fget(instance)怎么去理解呢?return self.fget(instance)是什么意思呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 18:27:05 | 显示全部楼层
就是返回自身属性 fget 调用后的返回值,因为 fget 传进的是一个函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 18:30:13 | 显示全部楼层
能理解这是在为后面的x=Myproperty做铺垫,就是没想明白这个流程是怎么样的,是怎么个流程呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 18:55:36 | 显示全部楼层
stone_qaq 发表于 2020-2-6 18:30
能理解这是在为后面的x=Myproperty做铺垫,就是没想明白这个流程是怎么样的,是怎么个流程呢?

流程如下:

执行 x = MyProperty() 首先执行 MyProperty 的 __init__ 方法。

当获取 x 时,执行 MyProperty 的 __get__ 方法;
当设置 x 时,执行 MyProperty 的 __set__ 方法;
当删除 x 时,执行 MyProperty 的 __del__ 方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 20:05:16 | 显示全部楼层
zltzlt 发表于 2020-2-6 18:55
流程如下:

执行 x = MyProperty() 首先执行 MyProperty 的 __init__ 方法。

怎么理解下面的self.fget(instance)呢
def__get__(self,instance,owner):
        return self.fget(instance)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 20:09:26 | 显示全部楼层
stone_qaq 发表于 2020-2-6 20:05
怎么理解下面的self.fget(instance)呢
def__get__(self,instance,owner):
        return self.fget(in ...

调用 self.fget() 函数并传递参数 instance。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 21:44:25 | 显示全部楼层
zltzlt 发表于 2020-2-6 18:27
就是返回自身属性 fget 调用后的返回值,因为 fget 传进的是一个函数。

fget调用后的返回值是什么呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 22:35:38 | 显示全部楼层
stone_qaq 发表于 2020-2-6 21:44
fget调用后的返回值是什么呢

我的理解是self.fget(instance)返回的值为后面定义的C()这个描述符类的实例
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-7 15:31:16 | 显示全部楼层
zltzlt 发表于 2020-2-6 20:09
调用 self.fget() 函数并传递参数 instance。

能麻烦看下我最新的回复吗,感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-7 16:23:42 | 显示全部楼层
stone_qaq 发表于 2020-2-6 21:44
fget调用后的返回值是什么呢

不一定。在小甲鱼课程举的那个例子中,fget() 返回的是 x 的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表