使用dict代替class

2024-04-29 09:23:55 发布

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

我不明白什么时候应该在Python上使用字典而不是类。如果一个类可以做与词典相同的事情,那么我们为什么要使用词典呢?例如,下面两个代码段的作用相同:

使用类:

class PiggyBank:
    def __init__(self, dollars, cents):
        self.dollars = dollars
        self.cents = cents


piggy1 = PiggyBank(2, 2)
print(piggy1.dollars)  # 2
print(piggy1.__dict__)  # {'dollars': 2, 'cents': 2}

使用字典:

def create_piggy(dollars, cents):
    return {'dollars': dollars, 'cents': cents}


piggy2 = create_piggy(2, 2)
print(piggy2['dollars'])  # 2
print(piggy2)  # {'dollars': 2, 'cents': 2}

最后,我创建了两个具有相同信息的静态对象。我应该在什么时候使用类或函数来创建实例


Tags: self字典def代码段create事情class词典
3条回答

如果字典满足您的用例,并且您没有被迫使用类,那么您可以使用字典。但若你们需要一些额外的类的好处(如下面),你们可以写的是类

当您可能需要类时的一些用例

  • 当您需要频繁更新代码时
  • 当你需要封装的时候
  • 当您需要重用相同的接口、代码或逻辑时

当你在做一些动态的事情时,你通常会想使用字典——在编写代码时,你不知道所有的键或信息。还要注意,类有一些限制,比如不能将数字用作属性

作为一个经典示例(使用collections.Counter有更好的解决方案,但我们仍将保留它的教育价值),如果您有一个要计算的值列表,您可以使用字典高效地进行计算:

items_to_count = ['a', 'a', 'a', 'b', 5, 5]

count = {}
for item in items_to_count:
    if item in count:
        count[item] += 1
    else:
        count[item] = 1

# count == {'a': 3, 'b': 1, 5: 2}

why do we use dictionaries?

字典是内置的容器,具有相当多的功能,可以在不增加us编码成本的情况下使用。因为它们是内置的,所以很多功能可能都得到了优化

相关问题 更多 >