On Mon, Dec 21, 2009 at 9:41 AM, Denis Doria <span dir="ltr"><<a href="mailto:denisdoria@gmail.com">denisdoria@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

All examples that I saw with property didn't show a way to do it in<br>
the __init__. Just to clarify, I don't want to check if the parameter<br>
is an int, or something like that, I want to know if the parameter do<br>
not use more than X chars; and want to do it when I'm 'creating' the<br>
instance; not after the creation:<br>
<br>
a = A('foo', 'bar')<br>
<br>
not<br>
<br>
class A:<br>
    def __init__(self, foo = None, bar = None):<br>
        self._foo = foo<br>
        self._bar = bar<br>
    def  set_foo(self, foo):<br>
        if len(foo) > 5:<br>
             raise <something><br>
        _foo = foo<br>
    foo = property(setter = set_foo)<br>
<br>
a = A()<br>
a.foo = 'foo'<br><br></blockquote><div><br></div><div>If I understand your requirements correctly-- you should just use</div><div>      self.foo = foo</div><div>in your __init__, as opposed to the backdoor</div><div>

      self._foo = foo</div><div><br></div><div>Properties are probably the best way to get what you want, and if you want to have the verification done, just don't bypass properties by assigning into the private variable. Just because its fair-game for methods of a class(and especially a classes initializer) to assign to the "pseudo-private" member variables, doesn't mean it /has/ to or even /should/ :)</div>

</div><br clear="all"><div name="mailplane_signature">--S</div>