在Python 2.5中,以下代码引发了TypeError 通用标签

如果我将class X替换为class X(object),它将起作用。对此有什么解释?

有帮助吗?

解决方案

原因是 super() 仅在新类,在2.x系列中意味着从object扩展: 通用标签

其他提示

此外,除非必须使用,否则不要使用super()。您可能会怀疑,使用新型类并不是通用的“正确的事情”。

有时候,您可能期望多重继承,并且可能会想要多重继承,但是在您了解MRO的繁琐细节之前,最好不要管它,并坚持: 通用标签

如果以上答案均未明确提及。您的父类需要从“对象”继承,这实际上会将其转变为新的样式类。 通用标签

我尝试了各种X.a()方法;但是,它们似乎需要X的实例才能执行a(),所以我做了X()。a(self),这似乎比以前的回答更完整,至少对于我遇到的应用程序而言。由于没有必要的构造和破坏,这似乎不是解决该问题的好方法,但效果很好。

我的特定应用是Python的cmd.Cmd模块,由于某种原因,它显然不是NewStyle对象。

最终结果: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top