首页 > 其他分享 >__getattr__和__getattribute__

__getattr__和__getattribute__

时间:2022-11-16 21:35:05浏览次数:41  
标签:__ getattribute 子类 self item getattr

python有两个魔法方法__getattr__和__getattribute__,都是用来获取对象属性,但很容易混淆

class Parent(object):
    def __init__(self):
        pass

    def __getattr__(self, item):
        print ("This is Parents __getattr__")
        return item

    def __getattribute__(self, item):
        print ("This is Parents __getattribute__")
        return item

class Child(Parent):
    def __init__(self):
        super(Child, self).__init__()

    def __getattr__(self, item):
        print ("This is Child __getattr__")
        return item

    def __getattribute__(self, item):
        print ("This is Child __getattribute__")
        return item

p=Parent()
print (p.x)
print ("==========parenets===========")
c=Child()
print (c.y)
This is Parents __getattribute__
x
==========parenets===========
This is Child __getattribute__
y

结论: __getattribute__优先于__getattr__

          __getattribute__: 子类找到__getattribute__就用子类的,子类没有就去父类找,父类找到__getattribute__就用父类的,父类还找不到就调用子类的__getattr__方法

           __getattr__:        子类找到__getattr__就调用子类的,子类没有就调用父类__getattr__

          两个方法都找不到就会报错AttributeError: 'Parent' object has no attribute 'x'

          

 

标签:__,getattribute,子类,self,item,getattr
From: https://www.cnblogs.com/pfeiliu/p/16897565.html

相关文章

  • day32
    1请求转发与重定向的区别2session与cookie的区别3过滤器与监听器的区别4web-inf目录web-inf目录是安全目录,无法从客户端访问,只能通过(服务端的)servlet的请求转发访......
  • 免费的服务器!
    服务器 最近发现了一个完全免费的服务器“③丰云”,关于它的使用体验确实资源很强,用着很舒服的一个服务商,比我用过其他的服务器感觉好多了,免费又好,访问速度快,非常推荐大......
  • 稀疏数组
    稀疏数组需求:编写五子棋游戏中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。解决:稀疏数组(一种数据结构)......
  • Git笔记
    Git笔记git命令行操作设置信息设置用户名和邮箱gitconfig--globaluser.name"ch"gitconfig--globaluser.email"[email protected]"workspace提交代码至repository......
  • 汉字转拼音的工具类
    平常是处理文字的时候更多用到的是字符串方面的工具类,作为学习汉字的工具,拼音还是很重要的一个辅助方式,分享一个汉字转拼音的工具类。可以用于帮助学习汉字或者作为一些汉......
  • 用Python入门知识点,打印自己的宠物小精灵,圆你的驯兽师梦
    神奇宝贝是我们的回忆,那时候做梦都想拥有一个皮卡丘,或者喷火龙也行!今天,或许是离梦想最近的一天。我将用python入门需要掌握的知识点,教你制作一个宠物小精灵,其实很简单。......
  • 缓冲区工作原理学习和攻击
    bufferoverflow基本的汇编语言MOVEAX,EBX:把EBX中存储的内容传给EAXADDEAX,EBX:把EAX和EBX相加,最终存到第一个变量EAX中PUSHEAX:入栈操作,ESP=ES......
  • Forest请求前置操作RSA签名加密
    前言在很多时候为了安全需要将请求的参数签名签名加密,使用非对称加密-RSA,非对称加密有供钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开,根据应用的不同,我们可以选择不同......
  • 洛谷-1714
    洛谷-1714思路求连续子段,显然需要前缀和处理一下,问题就变成了求出\(i,j\)使得\[\max\{s[i]-s[j]\},i-j>m\]于是利用双端队列从每个区间的max-min中找答案。但......
  • 你想了解的都在这!
    一:你可以在这些网站上找到我洛谷:用户昵称:kkksc006用户编号:768170用户类型:普通用户注册时间:2022-08-07VirtualJudge:用户名:AQ_用户昵称:小行星撞地球OpenJudge......