gpt4 book ai didi

python - 在 Python 中,对象和字典有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 20:27:41 24 4
gpt4 key购买 nike

创建对象后,我可以随意添加和删除插槽,就像使用字典一样。甚至方法也只是存储在槽中的对象,所以我可能也可以将方法添加到字典中。

有没有我可以用字典做不到的(非字典)对象做的事情?或者是否可以建立一个完全像某个类的对象的字典?

这个问题不是关于它们是如何创建的,而是关于我以后如何使用它们。链接或引用表示赞赏。

最佳答案

After an object has been created, I can add and remove slots at will, as I can do with a dictionary. Even methods are just objects stored in slots,

小心说插槽 -- __slots__ has a specific meaning in Python .

so I probably can add methods to a dictionary as well.

foo = {}
foo.bar = 1

AttributeError: 'dict' object has no attribute 'bar'

默认情况下不是,您需要对其进行子类化——但是您使用的是一个类。相反,将函数放入字典中:

def bar():
return 1

foo['bar'] = bar
foo['baz'] = lambda: 1

Is there something I can do with an object that I could never do with a dictionary?

这个问题实际上有一个错误的前提——字典是对象,所以你用字典做的任何事情你都是用一个对象。对于这个答案的其余部分,当你说“对象”时,我会假装你的意思是“用户定义的类”。

不,你可以用用户定义的类做任何你不能用字典做的事情。类甚至是用字典来实现的。

class Foo(object):
pass

print Foo.__dict__
# {'__dict__': <attribute '__dict__' of 'Foo' objects>, '__module__': '__main__',
# '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None}

任何你可以用 Python 中的类做的事情,你可以不用一个类来做,需要更多的工作(以及更难理解、使用和维护的代码)。甚至有人说 Python 类只是字典的语法糖。

最近有人问了一个非常相似的问题 Do I need to learn about objects, or can I save time and just learn dictionaries?我认为我对此的回答在这里也很重要。

关于python - 在 Python 中,对象和字典有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com