大家好,欢迎来到IT知识分享网。
什么是BIF
BIF即Bulit Internal Function,意为内置方法。
判断一个对象有无某个属性
hasattr()
全名为:has attribute ? 有某个属性吗?
例:
class Person(object): def __init__(self): self.home = 'earth' def sayHi(self): print('Hi,baby!') chinese = Person() print(hasattr(chinese,'home')) print(hasattr(chinese,'sayHi')) print(hasattr(chinese,'name'))
输出:
➜ test git:(master) ✗ python3 test.py True True False
home是chinese实例的一个变量属性,在__init__初始化时定义,sayHi是chinese实例的一个方法属性。
获取一个对象的属性
getattr()
全名为:get attribute,获取属性。
例:
class Person(object): def __init__(self): self.home = 'earth' def sayHi(self): print('Hi,baby!') chinese = Person() my_home = getattr(chinese,'home') # 获取对象的变量属性 my_say = getattr(chinese,'sayHi') # 获取对象的方法属性 my_age = getattr(chinese,'age','您所查找的属性不存在') # 设置默认返回值 print(my_home,my_say,my_age,sep='\n') my_name = getattr(chinese,'name') # 获取不存在的属性,会报AttributeError的错误 print(my_name)
输出:
➜ test git:(master) ✗ python3 test.py earth <bound method Person.sayHi of <__main__.Person object at 0x7f123fefdf28>> 您所查找的属性不存在 Traceback (most recent call last): File "test.py", line 59, in <module> my_name = getattr(chinese,'name') AttributeError: 'Person' object has no attribute 'name'
获取的方法属性还可以拿来执行:
# 执行 my_say() # 输出 Hi,baby!
设置对象的属性
setattr()
全名为:set attribute,设置属性。
例:
class Person(object): def __init__(self): self.home = 'earth' def sayHi(self): print('Hi,baby!') chinese = Person() my_home = setattr(chinese,'home','china') print(chinese.home)
输出:
➜ test git:(master) ✗ python3 test.py china
点击↓↓↓
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/75102.html