假设我有这两类:
<div v-for="prod in products.values()" :key="prod.id">
这将打印:
class A():
def foo():
print("foo inside A!")
class B(A):
def foo():
super().foo()
print("foo inside B!")
x = B()
x.foo()
是否有一种干净的方法可以中止foo inside A!
foo inside B!
的{{1}}方法中的B
的{{1}}方法中的代码执行?
类似的东西:
foo
这样输出将是:
A
编辑:为澄清起见,我试图避免检查foo
的{{1}}方法中返回的class A():
def foo():
print("foo inside A!")
if some condition:
<return from inherited method here>
class B(A):
def foo():
super().foo()
print("foo inside B!")
x = B()
x.foo()
。
答案 0 :(得分:3)
您可以从A.foo()
中引发一个B.foo()
异常,并在except
子句中进行一些工作。也许像这样:
class MyException(Exception):
pass
class A:
def foo(self):
print("foo inside A!")
if 'some condition':
raise MyException
class B(A):
def foo(self):
try:
super().foo()
except MyException:
print("foo inside B!")
对您有用吗?
答案 1 :(得分:1)
您的A.foo()
方法可以返回您在B.foo()
中签入的值。也许像这样:
class A:
def foo(self):
print("foo inside A!")
if 'some condition':
return True
else:
return False
class B(A):
def foo(self):
val = super().foo()
if val:
print("foo inside B!")
对您有用吗?