我遇到了这样一种情况:类的大多数方法在被调用时需要抛出一个异常,但如果特定条件为False
,则有一个方法不需要抛出异常。可以在大多数方法中编写 if not condition
语句,使每个方法在条件不为真时抛出异常,但我认为可能可以通过在类顶部使用单个装饰器来实现。
这个问题与此类似,但它涉及分别对每个方法进行装饰,如果我要这样做,我可能会直接将if
语句放入每个方法中。
下面是一些代码和注释以帮助理解:
CONDITION = True # change to False to test
def CheckMethods():
if CONDITION:
# run all the methods as usual if they are called
pass
else:
# raise an exception for any method which is called except 'cow'
# if 'cow' method is called, run it as usual
pass
@CheckMethods
class AnimalCalls:
def dog(self):
print("woof")
def cat(self):
print("miaow")
def cow(self):
print("moo")
def sheep(self)
print("baa")
a = AnimalCalls()
a.dog()
a.cat()
a.cow()
a.sheep()
有人知道如何做到这一点吗?我以前从未装饰过类,也从未尝试过像这样检查它的方法。