什么时候应该向Python对象动态添加属性?

2024-05-28 18:22:30 发布

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

我正在创建一个Python类,作为通过REST远程管理的对象的API。你知道吗

restapi包含一个调用,该调用返回定义远程对象属性的字典列表。我正在编写代码,以动态地将这些属性添加为相应Python对象的属性(即:实例化类时,对属性列表进行REST查询,然后将每个属性添加为实例上的属性)

然而,这让我想起了我曾经看过的动态地向对象添加属性的PHP代码,并想到“你听说过字典吗??”你知道吗

我的背景是基于C/C++和java的,这对我来说是个陌生的概念,但对于Python(和PHP)的课程来说可能是标准的。那么,什么时候应该动态地向对象添加属性而不是使用字典呢?你知道吗

从我在相关资料中读到的情况来看,API在我看来是合法的。你知道吗


Tags: 对象实例代码restapirestapi列表字典
2条回答

在这样的示例中,我更倾向于重载字典方法__getitem____setitem____delitem__keysvaluesitems,以及任何其他可能适用的方法。你知道吗

如果您正式定义类来表示Python中的数据,那么使用descriptors对于可读性来说是一个不错的选择。你知道吗

免责声明:我对REST一无所知。。。你知道吗

也就是说,出于以下原因,我通常会有点犹豫不决,不愿意为对象添加属性:

  • 由于命名空间冲突,您可能会意外地替换一些不希望替换的数据
  • 字典更容易检查,而不必经过obj.__dict__vars(obj)或类似的程序。你知道吗

在标准库中添加属性有优先权,但是。。。这就是argparse填充返回的namespace的基本方法。我认为也许值得问一个问题:“用户是否知道哪些属性将被添加到对象?”。如果这个问题的答案是yes,并且您不担心上述名称空间冲突,那么也许一个简单的对象是合适的,否则,我就使用字典。你知道吗

相关问题 更多 >

    热门问题