首先看下文档(python 2.6.6):
getattr(...)
getattr(object, name[, default]) -> value
Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
When a default argument is given, it is returned when the attribute doesn't
exist; without it, an exception is raised in that case.
简单翻译一下:从一个对象中获取属性(方法);getattr(x, 'y')相当于x.y,给定一个默认的参数当该对象不存在要获取的属性时同时会抛出一个异常。
下面两个简单的例子:
1:利用Import getattr实现懒加载。
class LazyImport:
def __init__(self,module_name):
self.module_name = module_name
self.module = None
def __getattr__(self,name):
if self.module is None:
self.module = __import__(self.module_name)
return getattr(self.module,name)
string = LazyImport("string")
print string.lowercase
2:本地类属性获取
class Test:
name = "liujijun"
def hello(self):
print 'This is hello'
test = Test()
hello = getattr(test,'hello')
hello()