鱼C论坛

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

[已解决]属性相关的魔法方法

[复制链接]
发表于 2021-8-15 11:47:14 | 显示全部楼层 |阅读模式

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

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

x
c.x()   这个x到底是什么,这个程序里也没有叫x的属性呀
关于这个在运行的时候c.x()为啥会两个都打印,getattr不是访问不存在的属性,getarrribute访问存在的属性,
setattr时,为啥改变的时getattr的值,getattribute不变那
最佳答案
2021-8-15 12:05:16
1.这是就是涉及到方法的执行顺序了,可以出当我们访问一个属性时,无论存在与否,都会先调用getattribute方法,如果该属性不存在,接着调用getattr
2.set被重写,调用父类的set将x声明并定义,这时访问x,先该对象的getattribute打印“getattribute”,再调用父类的getattribute,返回x的值
955DC481293E722A13E96E8619EE71CB.jpg
D731EC185299360764C999FFA409A068.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-15 12:05:16 | 显示全部楼层    本楼为最佳答案   
1.这是就是涉及到方法的执行顺序了,可以出当我们访问一个属性时,无论存在与否,都会先调用getattribute方法,如果该属性不存在,接着调用getattr
2.set被重写,调用父类的set将x声明并定义,这时访问x,先该对象的getattribute打印“getattribute”,再调用父类的getattribute,返回x的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-15 12:08:31 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-8-15 14:19:41 | 显示全部楼层
那么c.x()到底是个什么东西
这个x好像也没在类里面声明

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

使用道具 举报

 楼主| 发表于 2021-8-15 14:23:47 | 显示全部楼层
寄安 发表于 2021-8-15 14:19
那么c.x()到底是个什么东西
这个x好像也没在类里面声明

刚刚找到了原因,麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 19:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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