鱼C论坛

 找回密码
 立即注册
查看: 1123|回复: 14

[已解决]Python中只有实例属性,没有实例方法

[复制链接]
发表于 2020-4-28 13:50:15 | 显示全部楼层 |阅读模式

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

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

x
请问这句话对吗:
Python中只有实例属性,没有实例方法。
最佳答案
2020-4-28 14:02:47
liliya 发表于 2020-4-28 14:01
对,我的意思是,在实例对象自己的存储空间中,他存放的只有实例属性,方法应该只能是调用吧?
世界上本来不存在方法,叫的人多了,也就有了方法。
方法就是一个对象,跟属性没有任何区别。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-28 13:56:21 | 显示全部楼层
当然不对,
参数里面带有self的都是实例的方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 13:57:25 | 显示全部楼层
你要是愿意也可以写实例方法
不过没人这么干
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 13:58:27 | 显示全部楼层
qiuyouzhi 发表于 2020-4-28 13:56
当然不对,
参数里面带有self的都是实例的方法。

按照他的意思,这些都应该算作类方法……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 14:01:06 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 13:58
按照他的意思,这些都应该算作类方法……

对,我的意思是,在实例对象自己的存储空间中,他存放的只有实例属性,方法应该只能是调用吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 14:01:15 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 13:58
按照他的意思,这些都应该算作类方法……

噢,是吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 14:02:47 | 显示全部楼层    本楼为最佳答案   
liliya 发表于 2020-4-28 14:01
对,我的意思是,在实例对象自己的存储空间中,他存放的只有实例属性,方法应该只能是调用吧?
世界上本来不存在方法,叫的人多了,也就有了方法。
方法就是一个对象,跟属性没有任何区别。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 11:17:44 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 14:02
方法就是一个对象,跟属性没有任何区别。

大佬,能不能解决我个问题鸭。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 11:19:42 | 显示全部楼层
liliya 发表于 2020-5-3 11:17
大佬,能不能解决我个问题鸭。

好啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 11:22:42 | 显示全部楼层

就是我最近学到了__get__方法这不太明白了,我不是特别能够区分__get__跟__getattribute__的区别。
class C:
       def __get__(self,insatnace,owner):
            print('调用get魔法方法')
class B:
        x=C()
        def __getattribute__(self):
                 print('调用getattribute魔法方法')

#主程序
b=B()
b.x
这个里面x具有描述符类A。在我没有定义B类的 __getattribute__(self)方法的时候,b.x是会去调用A这个描述符类的__get__方法的。但是,如果我定义了B类的__getattribute__(self)方法,我再去b.x它会调用B类的__getattribute__(self)而不是A类的__get__方法了。这里面是不是有我不知道什么优先级问题啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 11:23:18 | 显示全部楼层
liliya 发表于 2020-5-3 11:22
就是我最近学到了__get__方法这不太明白了,我不是特别能够区分__get__跟__getattribute__的区别。
clas ...

不是A是C打错了。描述符类C
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 11:32:49 | 显示全部楼层
liliya 发表于 2020-5-3 11:23
不是A是C打错了。描述符类C

对类属性的访问都要经过 getattribute
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 11:34:52 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-3 11:32
对类属性的访问都要经过 getattribute

那是说原来的系统写好的那个getattribute方法,他存在什么“箭头”指向了调用__get__方法嘛,因为我自己写的程序改了之后是没办法去调用到__get__方法的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 11:36:27 | 显示全部楼层
liliya 发表于 2020-5-3 11:34
那是说原来的系统写好的那个getattribute方法,他存在什么“箭头”指向了调用__get__方法嘛,因为我自己 ...

这点不清楚,没用过描述符
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 11:43:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-3 11:36
这点不清楚,没用过描述符

感觉PYTHON的封装性真实了,总会遇到一些不知道原来代码到底怎么写得例子。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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