反射
- 在 Python 中,反射是指在运行时获取对象的信息,包括对象的属性和方法,以及动态地操作这些属性和方法。在面向对象编程中,反射允许你在运行时检查类和对象的信息,而不是在编写代码时硬编码这些信息。
(1)获取对象属性值和方法/调用getattr()
- 使用
getattr()
函数可以获取对象的属性值。
class Heart:
def __init__(self):
self.age = 18
heart=Heart()
age = getattr(heart, 'age')
print(age) # 输出: 18
- 使用
getattr()
函数可以获取对象的方法。
class Heart:
def talk(self):
return f'说话'
heart = Heart()
method = getattr(heart, 'talk')
result = method()
print(result) # 输出: 说话
- 使用
getattr()
函数获取方法,然后直接调用。
class Heart:
def talk(self):
return "说话"
heart = Heart()
method = getattr(heart, 'talk')
result = method()
print(result) # 输出: 说话
(2)设置对象的属性setattr()
- 使用
setattr()
函数可以设置对象的属性值。
class Heart:
def __init__(self):
self.age = 18
heart = Heart()
setattr(heart, 'age', 100)
print(heart.age) # 输出: 100
(3)检查对象是否有某个属性或方法hasattr()
- 使用
hasattr()
函数可以检查对象是否具有指定的属性或方法。
class Heart:
def __init__(self):
self.age = 42
heart = Heart()
has = hasattr(heart, 'age')
print(has) # 输出: True
has1 = hasattr(heart, 'name')
print(has1) # 输出: False
(4)删除对象属性delattr()
- 使用
delattr()
函数可以删除对象属性的内建函数。
class Heart:
def __init__(self):
self.age = 18
heart = Heart()
# 删除对象的属性
delattr(heart, 'age')
# 尝试访问已删除的属性会引发 AttributeError
# print(heart.age)
# 检查属性是否仍存在
has_attribute = hasattr(heart, 'age')
print(has_attribute) # 输出: False
标签:__,反射,Heart,self,heart,age,属性
From: https://www.cnblogs.com/ssrheart/p/17947908