Using decorators with argument in Python

John Posner jjposner at codicesoftware.com
Fri Jul 1 11:18:29 EDT 2011


On 2:59 PM, Ethan Furman wrote:

<snip>

>     def __call__(self, func=None):
>         if func is None:
>             return self._call()
>         self.func = func
>         return self
>     def _call(self):
>         print("\n" + self.char * 50)
>         self.func()
>         print(self.char * 50 + '\n')
>

I believe the "if" block should be:

  if func is None:
      self._call()
      return

Or perhaps the _call() method should be revised:

  def _call(self):
      print("\n" + self.char * 50)
      retval = self.func()
      print(self.char * 50 + '\n')
      return retval

-John




More information about the Python-list mailing list