getattr()

作者: import_hello | 来源:发表于2018-08-09 16:37 被阅读0次

    转载须注明出处:简书@Orca_J35

    getattr(object, name[, default])

    该函数属于反射操作,用于获取 object 中名为 name 的属性(name 是以字符串表示的属性名), getattr(x, 'foobar') 等效于 x.foobar。如果 object 中含有 name 属性,则返回该属性;如果 object 没有 name 属性,则返回 default(如果提供),否则抛出 AttributeError 异常。

    对于字段属性,会直接返回值;对于方法属性,会返回其引用(通过引用可调用方法属性)。

    class Cls:
        class_field = "类字段"
    
        def __init__(self):
            self.instance_field = "实例字段"
    
        def instance_method(self):
            print("实例方法")
    
        @staticmethod
        def static_method():
            print("静态方法")
    
        @classmethod
        def class_method(cls):
            print("类方法")
    
    
    a_instance = Cls()
    print("以下属性均可使用:", '\n',
          getattr(Cls, "class_field"), '\n',
          getattr(Cls, "static_method"), '\n',
          getattr(Cls, "class_method"), '\n',
          getattr(a_instance, "instance_field"), '\n',
          getattr(a_instance, "instance_method"))
    
    print("存在default参数:", '\n',
          getattr(a_instance, "extra_field", "没有该属性!"), '\n',)
    

    输出:

    以下属性均可使用:
     类字段
     <function Cls.static_method at 0x000001CEBC5F6730>
     <bound method Cls.class_method of <class '__main__.Cls'>>
     实例字段
     <bound method Cls.instance_method of <__main__.Cls object at 0x000001CEBC5F9550>>
    
    存在default参数:
     没有该属性!
    

    相关文章

      网友评论

          本文标题:getattr()

          本文链接:https://www.haomeiwen.com/subject/wudcbftx.html