简述hasattr() getattr() setattr() 函数使用详解?
参考答案:
在Python中,hasattr()
, getattr()
, 和 setattr()
是内建函数,用于检查、获取和设置对象的属性。
hasattr(object, name)
: 此函数用于检查对象是否具有名为name
的属性。如果对象有此属性,返回True,否则返回False。
例如:
class Test:
def __init__(self):
self.test_attr = "I exist!"
t = Test()
print(hasattr(t, "test_attr")) # 返回 True
print(hasattr(t, "no_such_attr")) # 返回 False
getattr(object, name[, default])
: 此函数用于获取对象的属性。如果对象有名为name
的属性,则返回该属性的值。如果对象没有此属性,且提供了default
参数,则返回default
。如果没有提供default
参数并且对象没有此属性,则引发AttributeError
异常。
例如:
class Test:
def __init__(self):
self.test_attr = "I exist!"
t = Test()
print(getattr(t, "test_attr")) # 返回 "I exist!"
print(getattr(t, "no_such_attr", "Default value")) # 返回 "Default value"
注意,getattr()
不仅可以用于实例属性,还可以用于类属性,甚至用于获取方法(在Python中,方法也是对象的属性)。
setattr(object, name, value)
: 此函数用于设置对象的属性。如果对象有名为name
的属性,则将其值设置为value
。如果对象没有此属性,则创建该属性并设置其值。
例如:
class Test:
def __init__(self):
self.test_attr = "I exist!"
t = Test()
setattr(t, "test_attr", "I am changed!")
print(t.test_attr) # 返回 "I am changed!"
setattr(t, "new_attr", "I am new here!")
print(t.new_attr) # 返回 "I am new here!"
这三个函数在处理动态属性访问或需要在运行时检查和修改对象属性时非常有用。但请注意,过度使用这些函数可能会使代码难以阅读和维护,因此通常建议直接访问和修改对象的属性,除非有明确的理由使用hasattr()
, getattr()
, 和 setattr()
。
学习笔记
0 学习笔记