我有以下课程:
class ConstraintFailureSet(dict, Exception) :
"""
Container for constraint failures. It act as a constraint failure itself
but can contain other constraint failures that can be accessed with a dict syntax.
"""
def __init__(self, **failures) :
dict.__init__(self, failures)
Exception.__init__(self)
print isinstance(ConstraintFailureSet(), Exception)
True
raise ConstraintFailureSet()
TypeError: exceptions must be classes, instances, or strings (deprecated), not ConstraintFailureSet
有没有搞错 ?
最糟糕的是我无法尝试super(),因为Exception是基于旧类的…
编辑:而且,是的,我试图切换继承/初始化的顺序。
EDIT2:我在Ubuntu8.10上使用CPython
2.4。您最近才知道这种信息很有用;-)。无论如何,这个小谜语已经让我的三个同事闭上了嘴。你会成为我今天最好的朋友…
两者Exception
和dict
都在C中实现。
我认为您可以按照以下方式进行测试:
>>> class C(object): pass
...
>>> '__module__' in C.__dict__
True
>>> '__module__' in dict.__dict__
False
>>> '__module__' in Exception.__dict__
False
由于Exception
并且dict
对如何在内部存储它们的数据有不同的想法,因此它们不兼容,因此您不能同时从两者继承。
在更高版本的Python中,尝试定义类时应获得Exception:
>>> class foo(dict, Exception):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
multiple bases have instance lay-out conflict
问题内容: 为什么以下代码不起作用(Python 2.5.2)? 我想创建一个类似的类,但具有不同的功能。显然我的函数永远不会被调用。而是调用原始文件并失败,因为它需要3个参数,而我传入了一个。 这里发生了什么?这是一个线索吗? 谢谢! 问题答案: 关于其他几个答案,这与用C本身实现的日期无关。该方法不做任何事情,因为它们是 不可变的 对象,因此构造函数()应该完成所有工作。您会看到相同的行为将i
因此,我正在Ubuntu 14.04机器上将所有工具从python2迁移到python3.4。到目前为止,我已经完成了以下工作: 仅针对我的用户,在我的zshrc中将python别名为python3 在系统本身上安装了pip3(但无论如何我都会使用VirtualNVS,所以我不会真正使用它) 将我的VirtualNVRapper“make”别名更改为('workon'在下面被调用为'v') 奇怪的
本文向大家介绍Python中的pathlib.Path为什么不继承str详解,包括了Python中的pathlib.Path为什么不继承str详解的使用技巧和注意事项,需要的朋友参考一下 起步 既然所有路径都可以表示为字符串,为什么 pathlib.Path 不继承 str ? 这个想法的提出在 https://mail.python.org/pipermail//python-ideas/201
为了便于DRY,我希望在父类中定义ContextConfiguration并让所有测试类继承它,如下所示: 父类: 子类: 根据ContextConfiguration文档,我应该能够继承父级的位置,但我不能让它工作。Spring仍然在默认位置()中查找文件,如果找不到,则会查找barfs。我尝试了以下方法,但没有成功: 使父类具体化 向父类添加无操作测试 同时向父类添加注入成员 以上组合 我使用
我需要一些帮助,情况是我能够返回新的CSV文件,但无法将绘图图返回到另一个页面,并且我在不同的场景下分离了。有人能指出我应该对代码做什么吗?或者给我一些提示,提前谢谢! 应用程序。派克
我使用从iPython笔记本下载CSV时建议的代码动态构建javascript代码,并在从jupyter笔记本调用时使用python中的javascript()将其传递给浏览器。代码工作得很好。如果我在python函数中嵌入相同的代码,并从同一个jupyter笔记本调用python函数,那么python中的调用Javascript()将不再有效。如何使可重用功能正常工作? 我正在Windows 1