* Denis Doria:

I thought in something like:

class A:
    def __init__(self, foo = None, bar = None):
        set_foo(foo)
        self._bar = bar
    def  set_foo(self, foo):
        if len(foo) > 5:
             raise <something>
        _foo = foo
    foo = property(setter = set_foo)

But looks too much like java

Yeah.

If member _foo has this constraint regardless then it's logically part of that member's type, so make it a type:

  class _Foo:
    def __init__( self, seq ):
      if seq is None:
        self.items = []
      elif len( seq ) > 5:
        raise <something>
      else:
        self.items = seq

  class A:  # Your example
    def __init__( self, foo = None, Bar = None ):
      self._foo = _Foo( foo )
      self._bar = bar
    def set_foo( self, foo ):
      self._foo = _Foo( foo )
    foo = property( setter = set_foo )


Cheers & hth.,

- Alf
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to