cuốn sách gpt4 ai đã làm

python - 具有相同类型名称的不同命名元组的有害副作用?

In lại Tác giả: Walker 123 更新时间:2023-11-28 16:42:14 29 4
mua khóa gpt4 Nike

考虑以下函数:

>>> 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 生成一个“临时”类,其字段名称与输入 mệnh lệnh 的键相同。然后它返回一个填充了值的实例。

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

可选信息:

如果您想知道我到底在做什么会让我写这段代码,我有一个 ORM,它返回有点像 mệnh lệnh 的结果。我已经看到对象在赋值时表现得很奇怪,我真的不想传递可能有或没有能力修改我的数据库的对象(取决于查询代码的编写方式)。尝试为每个查询维护 DTO 对象似乎太麻烦了,就像尝试使我的所有查询与一小组 DTO 兼容一样。所以我想出了一个快速、简单的方法来传递明显不可变的对象,我可以在其中编写代码,如 dto.a。它本质上是一个动态的、动态的 DTO 生成器。它还为我在调试时购买了一个相当不错的 repr 实现。

câu trả lời hay nhất

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

您所看到的只是使用 self.__name__ 生成表示字符串的类。类本身仅作为实例上的 .__class__ 引用存在,因为当 make_thing() 函数完成时会清除本地名称。

关于python - 具有相同类型名称的不同命名元组的有害副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921869/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress