python - “class MyDict(dict): pass”的目的是什么,它与普通字典有什么不同?
问题描述
MyDict
类有什么用,属性content
有什么用?
class MyDict(dict):
pass
company_settings_dict = instance.as_company_console_settings()
message = MyDict()
notification_type = "CompanyConsoleSettings"
data = {"data": company_settings_dict, "notification_type": "%s" % (notification_type), "is_new": False}
message.content = {"message": "%s" % (json.dumps(data)), "room": instance.company.id}
解决方案
在最后一行,您分配给message.content
.
这对于内置的dict
.
>>> d = {}
>>> d.content = 1
[...]
AttributeError: 'dict' object has no attribute 'content'
事实上,字典甚至没有__dict__
(显然)。
>>> vars(d)
[...]
TypeError: vars() argument must have __dict__ attribute
但是,您的自定义类型不会出现此类问题。
>>> class MyDict(dict):
...: pass
...:
>>> d = MyDict()
>>> d.content = 0
>>> vars(d)
>>> {'content': 0}
如果你打算设计一个更复杂的子类dict
,继承自collections.UserDict
. 我已经在这个答案dict
的最后部分列出了直接继承的一些问题。
推荐阅读
- twilio - 要使用 Twilio Sim 卡,是否需要越狱 TracFone?
- php - 从 apache 网站上传文件后出现 404,但可从文件管理器访问。文件夹和文件权限为 644
- javascript - Symfony 4:具有预览和附加/删除功能的多张图片上传
- android - 如何更新子集合 Firestore?
- java - 如何在 android 中获取 indexof(object) 请参阅我的示例以了解
- c# - 为服务器端 DOM 初始化 JQuery
- java - 使用 Java Hash map 转换 MorseCode 中的文本
- xcode - official binance-api swift4 compile error
- python - Multithreading with requests-html
- dart - 不清除共享偏好?