鱼C论坛

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

[已解决]super有什么作用啊??视频45 魔法方法

[复制链接]
发表于 2018-1-25 10:08:28 | 显示全部楼层 |阅读模式

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

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

x
问题一:为什么没有定义x,c.x就可以运算?类中并没有说property啊
问题二:在代码的最后super()是做什么的?
3.png
最佳答案
2018-1-25 10:32:58
c.x没有出错,因为默认的父类object已经有对于没有的属性访问时,要调用的__getattribute__方法,
C是object子类,继承了这一方法
因此允许把没有的x属性添加到C中

最后的super().__xxxx__是调用父类的xxxx函数,这里你写的是delattr,当然把_-改成__记得,
其实也可以省略
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-25 10:20:00 | 显示全部楼层
super 表示父类的意思。视频讲得清清楚楚的。
super().__delattr__(name) 继承父类的__delattr__方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 10:20:12 | 显示全部楼层
本帖最后由 sky 于 2018-1-25 10:24 编辑

你用.的时候 python解释器会找相应的属性 如果找不到 就会执行__getattribute__方法 如果没有__getattribute__方法就找__getattr__方法 如果__getattr__方法也没有就抛出异常
super用来调用父类方法 调用super 返回父类: Typical use to call a cooperative superclass method

  1. >>> help(super)
  2. Help on class super in module builtins:

  3. class super(object)
  4. |  super() -> same as super(__class__, <first argument>)
  5. |  super(type) -> unbound super object
  6. |  super(type, obj) -> bound super object; requires isinstance(obj, type)
  7. |  super(type, type2) -> bound super object; requires issubclass(type2, type)
  8. |  Typical use to call a cooperative superclass method
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 10:32:58 | 显示全部楼层    本楼为最佳答案   
c.x没有出错,因为默认的父类object已经有对于没有的属性访问时,要调用的__getattribute__方法,
C是object子类,继承了这一方法
因此允许把没有的x属性添加到C中

最后的super().__xxxx__是调用父类的xxxx函数,这里你写的是delattr,当然把_-改成__记得,
其实也可以省略
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 11:12:51 | 显示全部楼层
自动寻找其所有父类,并进行合理的初始化
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 07:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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