1.getattr() 是python 中的一个内置函数,用来获取对象中的属性值
2.getattr(obj,name[,default]) 其中obj为对象名,name是对象中的属性,必须为字符串。
3.两种表达式的区别
第一种,getattr(obj,"_attr")
第二种,getattr(obj,"_" + attr)
第一种只能访问_attr属性,
class Student: #定义类
def __init__(self,name,identity,age):
self._name=name
self._identity=identity
self.age=agedef __getitem__(self,item):ifisinstance(item,str):return getattr(self,"_item")
#实例化一个学生类对象
st = Student("Apollo", 15618661616, 28)
'''执行:
print(st["age"])
打印:
Traceback (most recent call last):
File "E:/Python学习/xfz/xfzapp/tests.py", line 13, in
print(st["age"])
File "E:/Python学习/xfz/xfzapp/tests.py", line 9, in __getitem__
return getattr(self, "_item")
AttributeError: 'Student' object has no attribute '_item''''
'''print(st["name"])
Traceback (most recent call last):
File "E:/Python学习/xfz/xfzapp/tests.py", line 26, in
print(st["name"])
File "E:/Python学习/xfz/xfzapp/tests.py", line 9, in __getitem__
return getattr(self, "_item")
AttributeError: 'Student' object has no attribute '_item''''
第二种可以访问所有带下划线的属性
'''执行:
print(st["age"])
打印:
Traceback (most recent call last):
File "E:/Python学习/xfz/xfzapp/tests.py", line 13, in
print(st["age"])
File "E:/Python学习/xfz/xfzapp/tests.py", line 9, in __getitem__
return getattr(self,"_" + item)
AttributeError: 'Student' object has no attribute '_age''''
print(st["name"])#Apollo
而第二种可以访问所有带下划线的属性