zoukankan      html  css  js  c++  java
  • (转)详解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()函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 相关阅读:
    HTML-代码定义
    数组
    for。。。for嵌套if,if嵌套for。
    输入年月日, 判断输入的是否正确
    日期功能
    方程
    5.8 一维数组
    5.9 二维数组
    5.7 类
    5.4穷举,迭代
  • 原文地址:https://www.cnblogs.com/liujiacai/p/10328169.html
Copyright © 2011-2022 走看看