当我在python

时间:2016-09-22 12:20:10

标签: python dictionary

我知道Python只会在dict for...in...语法中添加help(dict)时返回密钥列表。

但是dict会发生什么?

当我们使用__next()__时,我们无法在方法列表中看到dict方法。因此,如果我想根据class MyDict(dict) def __init__(self, *args, **kwargs): super(MyDict, self).__init__(*args, **kwargs) 创建派生类:

for...in...

使用d = Mydict({'a': 1, 'b': 2}) for value in d:

返回值列表
Actions action=new Actions(driver);
action.SendKeys(OpenQA.Selenium.Keys.Control + "]").Build().Perform();

我该怎么办?

1 个答案:

答案 0 :(得分:0)

天真地,如果你想要的只是迭代MyClass的实例来产生值而不是键,那么在MyClass中定义:

def __iter__(self):
    return self.itervalues()

在Python 3中:

def __iter__(self):
    return iter(self.values())

但要注意!通过这样做,即使collections.MutableMapping为True,您的班级也不再实施issubclass(MyClass, collections.MutableMapping)的合同。如果这是你想要的行为,你可能会更好地离开而不是子类dict,而是拥有类型dict的属性来保存数据,并且只实现这些功能和你需要的运营商。