• (转)详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数


    原文:https://www.jb51.net/article/138363.htm

    hasattr()函数

    hasattr()函数用于判断是否包含对应的属性

    语法:

    hasattr(object,name)

    参数:

    object--对象

    name--字符串,属性名

    返回值:

    如果对象有该属性返回True,否则返回False

    示例:

    class People:
      country='China'
      def __init__(self,name):
        self.name=name
      def people_info(self):
        print('%s is xxx' %(self.name))
    obj=People('aaa')
    print(hasattr(People,'country'))
    #返回值:True
    print('country' in People.__dict__)
    #返回值:True
    print(hasattr(obj,'people_info'))
    #返回值:True
    print(People.__dict__)
    ##{'__module__': '__main__', 'country': 'China', '__init__': <function People.__init__ at 0x1006d5620>, 'people_info': <function People.people_info at 0x10205d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None}

    getattr()函数

    描述:

    getattr()函数用于返回一个对象属性值

    语法:

    getattr(object,name,default)

    参数:

    object--对象

    name--字符串,对象属性

    default--默认返回值,如果不提供该参数,在没有对于属性时,将触发AttributeError。

    返回值:

    返回对象属性值

    class People:
      country='China'
      def __init__(self,name):
        self.name=name
    
      def people_info(self):
        print('%s is xxx' %(self.name))
    obj=getattr(People,'country')
    print(obj)
    #返回值China
    #obj=getattr(People,'countryaaaaaa')
    #print(obj)
    #报错
    # File "/getattr()函数.py", line 32, in <module>
    #   obj=getattr(People,'countryaaaaaa')
    # AttributeError: type object 'People' has no attribute 'countryaaaaaa'
    obj=getattr(People,'countryaaaaaa',None)
    print(obj)
    #返回值None

    setattr()函数

    描述:

    setattr函数,用于设置属性值,该属性必须存在

    语法:

    setattr(object,name,value)

    参数:

    object--对象

    name--字符串,对象属性

    value--属性值

    返回值:

    class People:
      country='China'
      def __init__(self,name):
        self.name=name
      def people_info(self):
        print('%s is xxx' %(self.name))
    obj=People('aaa')
    setattr(People,'x',111) #等同于People.x=111
    print(People.x)
    #obj.age=18
    setattr(obj,'age',18)
    print(obj.__dict__)
    #{'name': 'aaa', 'age': 18}
    print(People.__dict__)
    #{'__module__': '__main__', 'country': 'China', '__init__': <function People.__init__ at 0x1007d5620>, 'people_info': <function People.people_info at 0x10215d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None, 'x': 111}

    delattr()函数

    描述:

    delattr函数用于删除属性

    delattr(x,'foobar)相当于del x.foobar

    语法:

    setattr(object,name)

    参数:

    object--对象

    name--必须是对象的属性

    返回值:

    示例:

    class People:
      country='China'
      def __init__(self,name):
        self.name=name
      def people_info(self):
        print('%s is xxx' %(self.name))
    delattr(People,'country') #等同于del People.country
    print(People.__dict__)
    {'__module__': '__main__', '__init__': <function People.__init__ at 0x1006d5620>, 'people_info': <function People.people_info at 0x10073d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None}

    补充示例:

    class Foo:
      def run(self):
        while True:
          cmd=input('cmd>>: ').strip()
          if hasattr(self,cmd):
            func=getattr(self,cmd)
            func()
      def download(self):
        print('download....')
      def upload(self):
        print('upload...')
    # obj=Foo()
    # obj.run()

    总结

    以上所述是小编给大家介绍的详解Python3 中hasattr()、getattr()、setattr()、delattr()函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 相关阅读:
    终于在园子里安家了
    Ajax简单应用,检测用户名是否存在 (转)
    ASP.NET 2.0防止同一用户同时登陆方法一(转)
    .NET:七道asp.net页面传值题(转)
    蛙蛙推荐:SQLServer优化资料整理(转)
    我说看起来怎么这么眼熟
    ASP.NET 2.0防止同一用户同时登陆方法二(转)
    Javascirpt Function 不能命名为reset
    关于Jquery ajax调用一般处理程序Handler报500 错误(Internal Server Error)解决办法
    智能匹配
  • 原文地址:https://www.cnblogs.com/liujiacai/p/10328169.html
Copyright © 2020-2023  润新知