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 , 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',) #等同于People.x=
print(People.x) #obj.age=
setattr(obj,'age',)
print(obj.__dict__)
#{'name': 'aaa', 'age': }
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': }

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()
上一篇:用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)


下一篇:Oracle 空间字段 创建索引