# module = importlib.import_module("test1") # import test1 # module = importlib.import_module("test.person", package=True) # from test import person module = importlib.import_module("test_outer.test.person", package=True) # from test_outer.test import person Myclass = getattr(module, "M...
无论是类对象还是模块对象,或者是其他什么对象,都可以通过dir([obj])查看他们的属性,然后通过getattr(object, name[, default])来获取object中名为name的属性,如果没有名为name的属性,则返回的是default,如果没有定义default则触发AttributeError异常。 6、importlib的使用 importlib最常用的就是它的import_module方法,...
c="cc desc"if__name__=='__main__':print(sys.modules[__name__])#<module '__main__' from 'D:/脚本项目/lianxi/clazz/test.py'>print(GetText)#<class '__main__.GetText'>#获取函数print(getattr(GetText,"A"))#<function GetText.A at 0x00000283C2B75798>#获取函数返回值getattr(GetText,...
import importlib def load_function(module_name): module = importlib.import_module(module_name) return getattr(module, 'calculate') operation = input("请输入操作类型 ('add' 或 'multiply'): ") if operation == 'add': calculate_func = load_function('addition') elif operation == 'multiply':...
先在python解释器看下getattr()的帮助 : Help on built-in function getattr in module __builtin__: getattr(...) getattr(object, name[, default]) -> value Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. ...
(self,name,/)|Returngetattr(self,name).||__init__(self,/,*args,**kwargs)|Initialize self.Seehelp(type(self))foraccurate signature.|...>>>type.__doc__"type(object_or_name, bases, dict)\ntype(object) -> the object's type\ntype(name, bases, dict) -> a new type">>>dir(...
反射操作(如getattr、importlib.import_module)涉及额外的字符串查找和动态解析,性能通常低于直接调用。 性能对比测试 python import timeit class MyClass: def direct_method(self): pass obj = MyClass() # 直接调用 time_direct = timeit.timeit(lambda: obj.direct_method(), number=1000000) ...
val return wrapper 接着,将该装饰器按如下方式应用在待测函数上: @timeit_wrapper def exp(x): ... print('{0:<10} {1:<8} {2:^8}'.format('module', 'function', 'time')) exp(Decimal(150)) exp(Decimal(400)) exp(Decimal(3000)) 得到如下输出: ~ $ python3.8 slow_program.py mod...
2. getattr()用法 函数用法 getattr(object, name, default)作用:如果指定名称的属性不存在,则如果...
from importlib import import_module module = import_module("module_name") module_func = getattr(module, "func_name") 怎么样?是不是简洁多了。不仅调用流程一眼可见,最重要的是,当模块扩展或功能变化时,你甚至不需要改动这一段代码。因为这仅仅约定了调用流程,与具体实现已然没有关联。