Python getattr方法详解

在Python中,getattr 是一个内置的方法,用来获取对象的属性。getattr 方法的语法如下:
getattr(object, name [, default])
object:指定对象。name:指定属性的名称。default:如果属性不存在,则返回默认值。
获取对象属性
首先,我们来看一个简单的示例,演示如何使用getattr来获取对象的属性:
class GeekDocs:
website = "https://geek-docs.com"
gd = GeekDocs()
print(getattr(gd, 'website'))
运行结果:
https://geek-docs.com
在这个示例中,我们定义了一个GeekDocs类,其中包含一个website属性。然后,我们创建一个GeekDocs对象gd,并使用getattr方法获取了它的website属性。
属性不存在时返回默认值
如果要获取的属性不存在,可以通过传递第三个参数来设置默认值。下面是一个示例:
class GeekDocs:
website = "https://geek-docs.com"
gd = GeekDocs()
print(getattr(gd, 'blog', 'Blog not found'))
运行结果:
Blog not found
在这个示例中,我们尝试获取gd对象的blog属性,由于该属性不存在,所以返回了设置的默认值Blog not found。
动态调用方法
除了获取属性外,getattr还可以用来动态调用对象的方法。下面是一个示例:
class Calculator:
def add(self, a, b):
return a + b
def sub(self, a, b):
return a - b
calc = Calculator()
method_name = 'add'
result = getattr(calc, method_name)(5, 3)
print(result)
运行结果:
8
在这个示例中,我们定义了一个Calculator类,其中包含add和sub两个方法。通过getattr方法,我们动态调用了add方法,并传递了参数5和3,最终得到了8作为结果。
总结
通过本文的介绍,我们了解了getattr方法在Python中的用法,包括获取对象的属性、处理属性不存在的情况以及动态调用对象的方法。getattr方法的灵活性和实用性使其成为Python开发中常用的工具之一。
极客教程