python官方定义
getattr(object, name[, default])
返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之一,则返回该属性的值。例如, getattr(x, ‘foobar’) 等同于 x.foobar。如果指定的属性不存在,且提供了 default 值,则返回它,否则触发 AttributeError。
这一句最重要 getattr(x, ‘foobar’) 等同于 x.foobar
hasattr(object, name)
该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否有 AttributeError 异常来实现的。)
结合hasattr和getattr使用,方法的调用
# lib.commons.py
def login():
print("登陆!")
def logout():
print("页面!")
def home():
print("主页!")
# 运行文件
def run():
inp = input("请输入您想访问页面的url: ").strip()
modules,func=inp.split("/")
# "lib."+modules 连在一起设置fromlist
obj=__import__("lib."+modules,fromlist=True) # 注意fromlist参数
# hasattr 判断是否存在
if hasattr(obj,func):
#func ==》obj.func
func=getattr(obj,func)
# obj.func()
func()
else:
print("404")
if __name__ == '__main__':
run()