[Python-ideas] deferred default arguments

Terry Reedy tjreedy at udel.edu
Wed Jul 13 23:36:19 CEST 2011


On 7/13/2011 3:26 PM, Eric Snow wrote:

> class X:
>      def f(self, name="N/A"):
          print(name)
>
> class Y(X):
>      def f(self, name="N/A"):
>          super().f(name)

I believe

class Y(X):
     def f(self, name=None):
         super().f(name)
     f.__defaults__ = X.f.__defaults__

will more or less do what you want. Using 'super()' instead of 'X' does 
not seem to work. The default replacement might be done with a function 
or class decorator.

> Y().f()

prints 'N/A'

-- 
Terry Jan Reedy




More information about the Python-ideas mailing list