Python 对同一类型名称的不同名称的情侣有害的副作用?

Python 对同一类型名称的不同名称的情侣有害的副作用?,python,namedtuple,Python,Namedtuple,考虑以下功能: >>> from collections import namedtuple >>> def make_thing(**kwargs): ... ThingClass = namedtuple('ThingClass', kwargs.keys()) ... return ThingClass(**kwargs) ... >>> make_thing(x=1,y=2,z=3) ThingClass(y=2, x

考虑以下功能:

>>> from collections import namedtuple
>>> def make_thing(**kwargs):
...     ThingClass = namedtuple('ThingClass', kwargs.keys())
...     return ThingClass(**kwargs)
...
>>> make_thing(x=1,y=2,z=3)
ThingClass(y=2, x=1, z=3)
>>> make_thing(a=4,b=5,c=6)
ThingClass(a=4, c=6, b=5)
>>>
该函数调用
namedtuple
生成一个“临时”类,其字段名与输入
dict
的键相同。然后返回一个实例,并填入值

我的问题是,这是否有任何特别的缺陷,因为
namedtuple
typename
参数总是相同的,即使有不同的字段名。例如,如果
namedtuple
在后台创建了一个类,这样做会覆盖该类,那么我可能会看到一些潜在的奇怪行为随后出现。这样做有没有副作用/问题

可选信息:
如果你想知道我到底在做什么,让我不得不写这段代码,我有一个ORM,它返回了一些类似于dict的结果。我已经看到对象在赋值时的行为异常,我真的不希望传递那些可能或可能没有能力修改我的数据库的对象(取决于查询代码的编写方式)。尝试为每个查询维护DTO对象似乎太麻烦了,尝试使我的所有查询与一小部分DTO兼容也是如此。因此,我提出了一种快速、简单的方法来传递明显不可变的对象,在这里我可以编写像
dto.a
这样的代码。它本质上是一个动态的动态DTO发生器。它还为我在调试时购买了一个相当不错的
repr
实现。

没有陷阱,类没有集中注册

您所看到的只是使用
self.\uuuuu name\uuuu
生成表示字符串的类。当
make\u thing()
函数完成时,本地名称被清除,类本身仅作为实例上的
引用存在