给定一个类型对象的实例,如何调用该类的构造函数(与其他语言中的GetConstructor等效)

2024-04-29 10:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这看起来很简单,但如果只给出一个类型,我不知道如何获取类构造函数。 为了清晰起见,我创建了一个代码片段,将问题作为函数存根进行演示

谷歌没有提供任何有用的东西,也许我找不到合适的关键词来避免搜索引擎优化(SEO)驱使我去流行的python网站介绍

from typing import NamedTuple

class Person(NamedTuple):
    name: str
    age: int

def magic_thing_maker(the_type, ctor_args):
    pass # I am stuck with what to do here

some_type = type(Person)
the_person = magic_thing_maker(some_type, {'name':'Saul Goodman', 
'age':37})

assert (the_person == Person('Saul Goodman', 37))

请随时打电话给我的非音速的问这个问题;我明白问这个问题意味着我应该寻求更健康的方法来解决手头的问题

非常感谢您的帮助


Tags: the代码name类型agetypemagicsome
1条回答
网友
1楼 · 发布于 2024-04-29 10:25:29

由于type(Person)type,您可以使用类名作为替代。该类可以从globals实例化,使用**-operator将字典传递给构造函数。以下是一个例子:

def magic_thing_maker(the_type, ctor_args):
    return globals()[the_type](**ctor_args)

some_type = Person.__name__
the_person = magic_thing_maker(some_type, {'name':'Saul Goodman',
'age':37})

有关更多信息,请参见此question。 对于从导入的模块实例化类,可以使用getattr,请参见此question

相关问题 更多 >