liliya 发表于 2020-4-28 13:50:15

Python中只有实例属性,没有实例方法

请问这句话对吗:
Python中只有实例属性,没有实例方法。{:10_254:}

qiuyouzhi 发表于 2020-4-28 13:56:21

当然不对,
参数里面带有self的都是实例的方法。

永恒的蓝色梦想 发表于 2020-4-28 13:57:25

你要是愿意也可以写实例方法
不过没人这么干

永恒的蓝色梦想 发表于 2020-4-28 13:58:27

qiuyouzhi 发表于 2020-4-28 13:56
当然不对,
参数里面带有self的都是实例的方法。

按照他的意思,这些都应该算作类方法……

liliya 发表于 2020-4-28 14:01:06

永恒的蓝色梦想 发表于 2020-4-28 13:58
按照他的意思,这些都应该算作类方法……

对,我的意思是,在实例对象自己的存储空间中,他存放的只有实例属性,方法应该只能是调用吧?

qiuyouzhi 发表于 2020-4-28 14:01:15

永恒的蓝色梦想 发表于 2020-4-28 13:58
按照他的意思,这些都应该算作类方法……

噢,是吗

永恒的蓝色梦想 发表于 2020-4-28 14:02:47

liliya 发表于 2020-4-28 14:01
对,我的意思是,在实例对象自己的存储空间中,他存放的只有实例属性,方法应该只能是调用吧?

世界上本来不存在方法,叫的人多了,也就有了方法。方法就是一个对象,跟属性没有任何区别。

liliya 发表于 2020-5-3 11:17:44

永恒的蓝色梦想 发表于 2020-4-28 14:02
方法就是一个对象,跟属性没有任何区别。

大佬,能不能解决我个问题鸭。

永恒的蓝色梦想 发表于 2020-5-3 11:19:42

liliya 发表于 2020-5-3 11:17
大佬,能不能解决我个问题鸭。

好啊

liliya 发表于 2020-5-3 11:22:42

永恒的蓝色梦想 发表于 2020-5-3 11:19
好啊

就是我最近学到了__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__方法了。这里面是不是有我不知道什么优先级问题啊。

liliya 发表于 2020-5-3 11:23:18

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

不是A是C打错了。描述符类C

永恒的蓝色梦想 发表于 2020-5-3 11:32:49

liliya 发表于 2020-5-3 11:23
不是A是C打错了。描述符类C

对类属性的访问都要经过 getattribute

liliya 发表于 2020-5-3 11:34:52

永恒的蓝色梦想 发表于 2020-5-3 11:32
对类属性的访问都要经过 getattribute

那是说原来的系统写好的那个getattribute方法,他存在什么“箭头”指向了调用__get__方法嘛,因为我自己写的程序改了之后是没办法去调用到__get__方法的。

永恒的蓝色梦想 发表于 2020-5-3 11:36:27

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

这点不清楚,没用过描述符{:10_327:}

liliya 发表于 2020-5-3 11:43:02

永恒的蓝色梦想 发表于 2020-5-3 11:36
这点不清楚,没用过描述符

感觉PYTHON的封装性真实了,总会遇到一些不知道原来代码到底怎么写得例子。
页: [1]
查看完整版本: Python中只有实例属性,没有实例方法