鱼C论坛

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

[已解决]python魔法方法的问题

[复制链接]
发表于 2019-4-16 01:13:00 | 显示全部楼层 |阅读模式
2鱼币
请问,是每个类都有默认的魔法方法吗,为什么经常就是一个类继承自他的父类,然后重写某个魔法方法,并返回他父类的这个魔法方法,难道他父类中也有定义这个相同的魔法方法吗,还是说也是默认的
比如:  class C:
              def __getattribute__(self,name):
                  print('gatattribute')
                  return super().__getattribute__(name)
这里继承自Object类,难道不能直接随便自定义一个类,让这个类继承自定义的类,然后重写某个魔法方法,再返回这个自定义类的魔法方法吗?求解,魔法方法的本质是什么,每个类的魔法方法都一致吗?
最佳答案
2019-4-16 01:13:01
本帖最后由 凌九霄 于 2019-4-19 18:30 编辑

Python3.x以后,所有的类继承自object类,包括你自定义的类。如果想要你定义的类具有某种特定行为,就需要实现相应的魔法方法,即重写魔法方法。当然,这也看具体需要,也不是说只要定义了类就必须重写魔法方法。

最佳答案

查看完整内容

Python3.x以后,所有的类继承自object类,包括你自定义的类。如果想要你定义的类具有某种特定行为,就需要实现相应的魔法方法,即重写魔法方法。当然,这也看具体需要,也不是说只要定义了类就必须重写魔法方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-16 01:13:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2019-4-19 18:30 编辑

Python3.x以后,所有的类继承自object类,包括你自定义的类。如果想要你定义的类具有某种特定行为,就需要实现相应的魔法方法,即重写魔法方法。当然,这也看具体需要,也不是说只要定义了类就必须重写魔法方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-19 20:24:07 | 显示全部楼层
凌九霄 发表于 2019-4-19 18:26
Python3.x以后,所有的类继承自object类,包括你自定义的类。如果想要你定义的类具有某种特定行为,就需要 ...

那为什么要调用父类的魔法方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-10 09:02:29 | 显示全部楼层
小林白白 发表于 2019-4-19 20:24
那为什么要调用父类的魔法方法

我个人理解是如果需要父类原魔法方法的功能,而又需要实现新的功能,则这般调用,实现对原魔法方法的扩展,代码上也更简洁,否则你需要重写整个方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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