Why such structure
class A: def __init__(self, a): self.a = a def p(self, b=self.a): print b
gives an error
For cases where you also wish to have the option of setting 'b' to None:
def p(self, **kwargs): b = kwargs.get('b', self.a) print b