栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在python类上重载__dict __()

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在python类上重载__dict __()

__dict__
不是 对Python对象的特殊方法。它用于属性字典;
dict()
从不使用它。

相反,您可以支持 迭代
;当

dict()
传递产生键值对的可迭代对象时,将生成一个具有这些键值对的新字典对象。

您可以通过实现一个

__iter__
方法来提供iterable,该方法应返回iterator。将该方法实现为生成器函数就足够了:

class Foo(object):    def __init__(self, *values):        self.some_sequence = values    def __iter__(self):        for key in self.some_sequence: yield (key, 'Value for {}'.format(key))

演示:

>>> class Foo(object):...     def __init__(self, *values):...         self.some_sequence = values...     def __iter__(self):...         for key in self.some_sequence:...  yield (key, 'Value for {}'.format(key))... >>> f = Foo('bar', 'baz', 'eggs', 'ham')>>> dict(f){'baz': 'Value for baz', 'eggs': 'Value for eggs', 'bar': 'Value for bar', 'ham': 'Value for ham'}

您也可以继承子类

dict
,或实现Mapping抽象类,并
dict()
识别二者之一并将键和值复制到新的字典对象中。这还需要更多的工作,但是如果您希望自定义类也像其他地方的映射一样工作,那么这可能是值得的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号