一个类应该有多个属性或一个属性作为具有许多键的字典,Python3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个类应该有多个属性或一个属性作为具有许多键的字典,Python3相关的知识,希望对你有一定的参考价值。

我根据环境温度计算了不同位置物体的温度。我有两种实施方式。在BodyA中,每个位置的温度是该类的属性;而在BodyB,有一个属性pos_t,这是一个字典,每个位置的温度只是字典中的一个键值对。

class BodyA:
    def __init__(self, ambient_temperature)
        self.amb_t = ambient_temperature
        self.pos1_t = self.amb_t + 1
        self.pos2_t = self.amb_t * 2
        self.pos3_t = self.pos1_t + self.pos2_t - 5


class BodyB:
    def __init__(self, ambient_temperature)
        self.amb_t = ambient_temperature
        self.pos_t = dict()
        self.pos_t['pos1'] = self.amb_t + 1
        self.pos_t['pos2'] = self.amb_t * 2
        self.pos_t['pos3'] = self.pos_t['pos1'] + self.pos_t['pos2'] - 5

在实际情况中,最多有10个职位,我想从中建立儿童班。有些儿童班没有某些职位。例如,某些孩子可能会遗漏pos2

能不能让我知道,哪个设计在OOP和效率方面更好。谢谢。

答案

用于存储某些自定义标识符的数据结构,这些标识符可能或可能存在为dict清楚地调用。由于类属性也存储在内部字典中,因此也可以使用第一种方法,但如果没有明确的手写操作而需要实际操作,则成员将需要不同的代码。我怀疑表现无关紧要。如果你发现它很重要,可能会重新设计完全不使用类的数据结构,因为对象创建处理时间可能是相关的。

以上是关于一个类应该有多个属性或一个属性作为具有许多键的字典,Python3的主要内容,如果未能解决你的问题,请参考以下文章

如何合并具有相同键或不同键的多个字典?

C#如何创建具有多个相同键的字典? [复制]

具有相同键的多个条目的字典[重复]

将具有多个键的 Python 字典映射到具有多个匹配键的列的数据框中

创建和查找每个值具有多个键的 2D 字典

如何在 C# 中缓存具有多个键的对象