鱼C论坛

 找回密码
 立即注册
查看: 718|回复: 7

关于属性访问的问题

[复制链接]
发表于 2018-8-28 00:00:40 | 显示全部楼层 |阅读模式
5鱼币
代码如下:
class C:
    def __getattribute__(self, name):
        print('getattribute')
        # 使用 super() 调用 object 基类的 __getattribute__ 方法
        return super().__getattribute__(name)  

    def __setattr__(self, name, value):
        print('setattr')
        super().__setattr__(name, value)

    def __delattr__(self, name):
        print('delattr')
        super().__delattr__(name)

    def __getattr__(self, name):
        print('getattr')

问题:感觉标红的两句不写也可以,这里写了有什么意义吗,只不过是重新调用下父类的这个方法,也没有任何返回值啊?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-28 00:23:39 | 显示全部楼层
可以说有意义,也可以说没有意义。
1. 你可以继承父类的方法,比如说按照族谱命名。
2. 你可以重载,我就是喜欢现代的名字,然后改了。

class C 目前并没有真正的父类,所以没有什么差别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-28 07:17:40 | 显示全部楼层
标红的为了让你的设置参数和删除参数能实现对应功能,而不是就打印看看而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-28 21:57:35 From FishC Mobile | 显示全部楼层
塔利班 发表于 2018-8-28 07:17
标红的为了让你的设置参数和删除参数能实现对应功能,而不是就打印看看而已

实现对应的什么功能啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-28 22:00:20 | 显示全部楼层
红色的去掉了,你调用set功能的时候就只显示print的内容了,然后set正常功能就没了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-28 22:56:43 | 显示全部楼层
本帖最后由 787330410 于 2018-8-28 22:59 编辑

在类中重新编写魔法方法会覆盖父类(object)的对应魔法方法,为了让新的魔法方法仍然实现原来的操作,就要再调用一次父类的对应魔法方法(就是说如果没有红色语句的话就只会执行print)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-28 23:05:20 | 显示全部楼层
受教了,嗯嗯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-29 07:35:09 | 显示全部楼层
xue11 发表于 2018-8-28 21:57
实现对应的什么功能啊

设置属性和删除属性这2个功能啊。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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