Is there are good DRY fix for this painful design pattern?

Jugurtha Hadjar jugurtha.hadjar at gmail.com
Thu Mar 1 07:56:38 EST 2018


On 03/01/2018 10:34 AM, Gregory Ewing wrote:
> After this thread, the term "docstring" is never going
> to mean quite the same thing to me again.
>

I still feel that the following is quite readable:

<----------------------------------->

import inspect

def snatch(func):
     def snatched(self, *args, **kwargs):
         signature = inspect.signature(func)
         for name in signature.parameters:
             if name != 'self':
                 kwargs.setdefault(name, getattr(self, name))
         return func(self, *args, **kwargs)
     return snatched


class Foo(object):
     def __init__(self, sleepy, groggy):
         self.sleepy = sleepy
         self.groggy = groggy

     @snatch
     def spam(self, sleepy=None):
         print("I am spam. sleepy=", sleepy)

     @snatch
     def ham(self, sleepy=None, groggy=None):
         print("I am ham. sleepy=", sleepy, " and groggy=", groggy)

<-------------------------------------->

-- 
~ Jugurtha Hadjar,




More information about the Python-list mailing list