![]() |
1
46
我在回答我自己的问题,因为我最终决定
做
希望对dict进行子类化,而不是创建新的映射类,并且在某些情况下,userdict仍然遵从基础dict对象,而不是使用提供的
在读取和重新读取python 2.6.4源代码之后(主要是
彼得·汉森的建议让我更仔细地观察
我用以下代码测试过它:
它过去了。我尝试过的所有其他实现在某个时刻都失败了。我仍然会接受任何能表明我错过了什么的答案,但否则,我会在几天内勾选这一个旁边的复选标记,并称之为正确的答案:) |
![]() |
2
4
您对dict子类化的用例是什么? 您不需要这样做来实现类似dict的对象,在您的情况下,编写一个普通类,然后添加对dict接口所需子集的支持可能会更简单。 实现您所追求的目标的最佳方法可能是mutablemapping抽象基类。 PEP 3119 -- Introducing Abstract Base Classes 这也将帮助您回答“是否还有其他方法需要重写?”。您将需要重写所有抽象方法。对于可变映射:抽象方法包括 设置项 , 德莱特 . 具体方法包括pop、popitem、clear、update。 |
![]() |
3
3
我发现伊恩的回答和评论非常有帮助和清晰。我只想指出,也许是第一次给超级班打电话
用:
然后上面发布的测试代码失败:
看着
collections.py code
结果是有秩序的信息技术
需要
它的
因此,只需向super添加第一个调用
我们有一个更通用的解决方案,显然对dict和ordereddict都有效。
我不能说明这个解决方案是否一般有效,因为我只使用ordereddict测试它。但是,很可能是打电话给超级
|
![]() |
4
0
使用object.keyname=value而不是object[“keyname”]=value |
![]() |
David Sundström · 子视图在xcode游乐场中不工作 7 年前 |
|
James Wang · 为什么我的超类要调用我的子类方法? 7 年前 |
![]() |
J. Cal · 子类无法继承超类字段[重复] 7 年前 |
![]() |
Narwhal · 如何在UIView的子类中正确初始化传递的属性? 7 年前 |
![]() |
Sami · 超类行为未按预期应用于企鹅对象 7 年前 |
![]() |
SanMu · 对子类使用SKSpriteNode的属性 7 年前 |