On Tue, Oct 7, 2008 at 10:08 AM, Daniele <[EMAIL PROTECTED]> wrote:
> Hi all,
> I know very little about OOP in Python, I'm working on it but, for the
> time being, here's my problem:
> I want to create a method of a class with a default value. The problem
> is that this default value should be an instance field of that same
> class. For example:
>
> class Test():
>  def __init__(self):
>    self.field='Default'
>
>  def myMethod(self, parameter=self.field):
>    pass
>
> I'm getting an error like "name 'self' is not defined"; it seems I
> cannot access self.field in the method definition. Is there a
> work-around (or maybe just the proper way to do it)?

def myMethod(self, parameter=None):
  if parameter is None:
    parameter = self.field

If None is actually a valid value for parameter, you can create a
unique marker object:
outside the class:
_marker = object()

then:
def myMethod(self, parameter=_marker):
  if parameter==_marker:
    parameter = self.field

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to