从子类调用时,跳过父类函数的函数装饰器

时间:2019-04-09 11:13:37

标签: python django python-3.x python-2.7

说,我有两个班AB。当使用test()从子class B调用super函数时,它应该跳过@validate装饰器。从子类调用时,如何强制super方法跳过父类函数的装饰器?有可能吗?

class A:

   @validate  
   def test():
      pass

Class B(A):

   @validate 
   def test():
      super(B, self).test()
      pass

1 个答案:

答案 0 :(得分:2)

您可以在父类中删除@validate批注,这样它就不会被调用

class A:

   def test():
      pass

Class B(A):

   @validate 
   def test()
      super(B, self).test()
      pass

另一种选择是使用中间方法

class A:

   @validate  
   def test():
      intermediate()

   def intermediate():
       pass


Class B(A):

   @validate 
   def test()
      super(B, self).intermediate()
      pass