鱼C论坛

 找回密码
 立即注册
查看: 1393|回复: 4

self.fset(instance,value)的用法?

[复制链接]
发表于 2020-1-26 19:07:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Emma_ma 于 2020-1-26 19:09 编辑

不太明白小甲鱼046节课程里说道Property属性调用原理里涉及到self.fset(instance,value)的用法,我理解的是self.fget/fset/fdel是定义成一个属性,为什么后面可以直接加上一个括号后变成一个方法来使用?还是说这三个是Python内置的BIF,这里是直接调用内置方法?求教各位大神讲解,非常感谢!

class Myproperty():
    def __init__(self,fget=None,fset=None,fdel=None):
        self.fget = fget
        self.fset = fset
        self.fdel = fdel

    def __get__(self,instance,owner):
        return self.fget(instance)

    def __set__(self,instance,value:
                self.fset(instance,value)

    def __del__(self,instance):
                self.fdel(instance)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-26 19:16:45 | 显示全部楼层
属性可以是方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 20:13:01 | 显示全部楼层
zltzlt 发表于 2020-1-26 19:16
属性可以是方法。


谢谢解答,这样的话我就不太明白这个属性变成方法是实现了什么结果?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 20:43:07 | 显示全部楼层
Emma_ma 发表于 2020-1-26 20:13
谢谢解答,这样的话我就不太明白这个属性变成方法是实现了什么结果?

如果属性是一个函数,那么可以调用这个属性。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 14:53:31 | 显示全部楼层
zltzlt 发表于 2020-1-26 20:43
如果属性是一个函数,那么可以调用这个属性。

欲速则不达,重头开始看第二遍再回到这里就理解了你的解答,我一开始总把fget这这个参数想成是被一个常量赋值,其实他也可以是被赋予一个函数方法,赋予方法后调用它就等于调用一个方法了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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