我有以下代码 - 我在我不理解结果的行旁边评论过。
class A:
pass;
class B(A):
pass;
class C(B):
pass;
for i in [A,B,C]:
try:
raise i();
except C:
print("C");
except B:
print("B");
### if i write A(), it shows: __main__.A: <__main__.A instance at 0x00ACBE18>
except A:
print("A");
这是我第一次使用该网站,所以如果有任何需要澄清的话请告诉我......
答案 0 :(得分:4)
A
是一个班级。当你写A()时,你实际上实例化了类A
当您将类A
的实例引发为异常时(i = A
时),
没有except
子句会在写入此A()
那么你看到了什么:__main__.A: <__main__.A instance at 0x00ACBE18>
是已经引发的实例,没有人抓住它。
你实际上可以使用()
。在C()上试试。
class A:
pass
class B(A):
pass
class C(B):
pass
for i in [A,B,C]:
try:
raise i()
except C():
print("C")
except B:
print("B")
except A:
print("A")
将输出:
A
B
B
您可以在python here中阅读有关错误和异常的更多信息。