我是靠谱客的博主 俭朴哑铃,这篇文章主要介绍Python--类的反射,现在分享给大家,希望可以做个参考。

反射/自省

反射,reflection,指的是运行时获取类型定义信息。
一个对象能够在运行时,像照镜子一样,反射出其类型信息。简单说,在Python中,能够通过一个对象,找出其type、class、attribute或method的能力,称为反射或自省。
具有反射能力的函数有type(),isinstance(),callable().dir().getattr()等

  • getattr(object,name[,default]):通过name返回object的属性值,当属性不存在,将属性不存在,将使用default返回,如果没有default,则抛出AttributeError,name必须是字符串
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Test: name = 'Jax' def a(self): print('10') print(getattr(Test, 'name', 'none')) >>> Jax print(getattr(Test, 'a', 'none')) >>> <function Test.add at 0x0000020972857158> t = Test() getattr(t,'a')() >>>10
  • setattr(object,name,value):object的属性,存在则覆盖,不存在则新增
    value可以为值
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Test: name = 'Jax' def a(self): print('10') t = Test() setattr(t,'name', lucy) print(t.name) >>> lucy
    也可以为匿名函数
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Test: name = 'Jax' def add(self): print('10') t = Test() setattr(t, 'name', lambda x: x - 1) a = t.name(5) print(a) >>>4
  • hasaattr(object,name):判断对象是否有这个名字的属性,name必须为字符串
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Test: name = 'Jax' def ad(self): print('10') a = hasattr(Test, 'name') print(a) >>> True
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import test if hasattr(test,'name'): func = getattr(test,'name') func() else: print('不存在') >>> 不存在

最后

以上就是俭朴哑铃最近收集整理的关于Python--类的反射的全部内容,更多相关Python--类内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(99)

评论列表共有 0 条评论

立即
投稿
返回
顶部