getattr()内置函数
getattr()
是 Python 的一个内置函数,用于动态地获取对象的属性或方法。可以通过字符串的形式获取对象的某个属性或方法,而不用显式地访问它。这在处理属性名动态变化时非常有用。
基本语法:
getattr(object, name[, default])
object
:要获取属性的对象。name
:属性或方法的名称,作为字符串传递。default
(可选):如果属性不存在,可以返回一个默认值。
如果属性存在,getattr()
会返回对应的属性值;如果不存在且提供了 default
,则返回 default
;如果 default
未提供且属性不存在,则会引发 AttributeError
。
示例:
class MyClass:def __init__(self):self.attr1 = 10self.attr2 = 20# 创建对象
obj = MyClass()# 使用 getattr 获取属性
value = getattr(obj, 'attr1') # 获取属性 attr1
print(value) # 输出: 10# 使用 getattr 获取不存在的属性,提供默认值
value = getattr(obj, 'attr3', 'Default Value')
print(value) # 输出: Default Value# 如果没有默认值且属性不存在,则会报错
# value = getattr(obj, 'attr3') # 这行会抛出 AttributeError
在代码中的应用:
layer = getattr(self.model, f'layer{layer_index + 1}')
这里 getattr()
用于动态获取模型中的某一层。f'layer{layer_index + 1}'
是一个格式化字符串,根据 layer_index
的值拼接得到层的名字(例如 layer1
、layer2
等)。通过 getattr()
,可以在训练时根据不同的 layer_index
动态获取模型的不同层。