gpt4 book ai didi

python - 使用类的名称实例化类的对象

转载 作者:行者123 更新时间:2023-11-30 23:17:59 26 4
gpt4 key购买 nike

我想编写一个Python实用程序,给定一个类名作为输入(可能是一个字符串),以及可以找到该类的模块的名称以及该类的构造函数的参数,它实例化此类的对象。

这可以用 python 来做吗?如果是,最好的选择是什么?

最佳答案

您可以使用 getattr() function 访问模块中的任何名称。 ;使用它来检索对所需类对象的引用:

klass = getattr(module, classname)
instance = klass(*args, **kw)

其中module是一个模块对象,classname是带有类名称的字符串,args是位置参数序列, >kw 与关键字参数的映射。

要从字符串中获取模块名称,请使用 importlib.import_module()动态导入:

import importlib

module = importlib.import_module(modulename)

您甚至可以接受最终类的点路径标识符,只需将其拆分为模块名称和类:

modulename, _, classname = identifier.rpartition('.')

演示:

>>> import importlib
>>> identifier = 'collections.defaultdict'
>>> modulename, _, classname = identifier.rpartition('.')
>>> modulename, classname
('collections', 'defaultdict')
>>> args = (int,)
>>> kw = {}
>>> module = importlib.import_module(modulename)
>>> klass = getattr(module, classname)
>>> klass
<type 'collections.defaultdict'>
>>> instance = klass(*args, **kw)
>>> instance
defaultdict(<type 'int'>, {})

关于python - 使用类的名称实例化类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com