• Python3 hasattr()、getattr()、setattr()、delattr()函数


    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()
  • 相关阅读:
    Line of Sight 计算几何基础
    Hash算法详解
    高效mysql的习惯(程序员版本)
    thymeleaf初步使用
    @Transactional注解事务不起作用
    泛型的理解
    Git&GitHun 命令合集
    springboot引入thymeleaf
    springboot静态资源映射
    springboot的配置文件
  • 原文地址:https://www.cnblogs.com/hwlong/p/8871661.html
Copyright © 2020-2023  润新知