老冰棍e 发表于 2020-5-2 09:27:48

关于魔法方法返回值的问题

>>> class C:
      def __getattr__(self, name):
                print(1)
                return super().__getattr__(name)
      def __getattribute__(self, name):
                print(2)
                return super().__getattribute__(name)
      def __setattr__(self, name, value):
                print(3)
                super().__setattr__(name, value)
      def __delattr__(self, name):
                print(4)
                super().__delattr__(name)

               
>>> c = C()
>>> c.x

问一下这些方法为什么前两个要在最后加return   后两个就不用

wp231957 发表于 2020-5-2 09:30:53

前俩个是get属性值,需要返回给调用者数据
后倆属于设置属性值,不需要给谁传数据

qiuyouzhi 发表于 2020-5-2 10:03:02

获取值当然需要返回,可是设置值属性和删除值属性需要返回值吗?
当然不需要,它们只需要对元素进行操作就好。

jkluoling1992 发表于 2020-5-2 13:26:01

set 和 delete是直接对内存操作了,设置数值或者销毁数值,

get就是从内存中获取值,不return就看不到获取的值

lixiangyv 发表于 2020-5-4 14:03:12

前两个做做用时获取属性,获取属性当然是要返回属性的值了,
后两个时设置属性的值和删除属性,就不需要返回值了
页: [1]
查看完整版本: 关于魔法方法返回值的问题