Python hasattr() getattr() srtattr()

待深入理解

https://blog.csdn.net/weixin_42233629/article/details/82261547

简单理解

hasattr(object, name)

判断object里面是否有name属性或者name方法,返回bool值,有name特性返回True, 否则返回False。

class Test(object):
    name = "test"
    def run(self):
        return "run run run"
    
t = Test()

hasattr(t, "name")
Out[3]: True

hasattr(t, "run")
Out[4]: True

getattr(object, name,[default])

获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。
需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址

getattr(t, "name")
Out[5]: 'test'

getattr(t, "age")
Traceback (most recent call last):

Out[6]:File "<ipython-input-6-a0866cb37b6b>", line 1, in <module>
    getattr(t, "age")

AttributeError: 'Test' object has no attribute 'age'

getattr(t, "age", "18")
Out[7]: '18'

getattr(t, "run")
Out[8]: <bound method Test.run of <__main__.Test object at 0x00000174F19AE2B0>>

setattr(object, name, values)

给对象的属性赋值,若属性不存在,先创建再赋值。


hasattr(t, "age")
Out[12]: False

setattr(t, "age", "18")

t.age
Out[14]: '18'

hasattr(t, "age")
Out[15]: True
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,857评论 2 16
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,019评论 17 410
  • socket()类# socket语法socket(socket_family, socket_type, pro...
    疯帮主阅读 873评论 0 0
  • 应聘归来思愈烦,所求无力也无援。 人生一向难如意,纵有不公哪可言。 2018.8.15夜草
    一襟月光阅读 428评论 2 6
  • 看到一篇文章,其中有这么一段关于水和人性的描述: 人性善恶,是所有社会理论的起点。儒学,也不例外。孔孟之儒...
    wmyone阅读 1,543评论 0 6