On Thu, 13 Dec 2007 13:35:24 -0800, sturlamolden wrote: > On 13 Des, 19:16, "Chris Mellon" <[EMAIL PROTECTED]> wrote: > >> I don't feel that it's especially inconsistent, and I like decorators. >> Having to write foo everywhere isn't that nice, but it's only mildly >> worse than C# to me - I find the extra block levels really atrocious. > > Personally I find properties atrocious and unsafe. One cannot > distinguish between a function call and binding an attribute in a > statement like: > > foo.bar = 2 # Does this call a function or bind an attribute? > # Is this foo.setBar(2) or setattr(foo,'bar',2)?
Why do you care? As the class *creator*, you care, but as the class *user*, you shouldn't need to -- at least assuming it is a well-written class. (You might care if the class' setter has harmful side-effects, but that's no difference from a class with a __setattr__ method with harmful side-effects.) > Even worse: if we make a typo, the error will not be detected as the > syntax is still valid. Properties and dynamic binding do not mix. I'm not quite sure I understand that criticism. How is that different from things which are not properties? foo.baz = 2 # oops, I meant bar will succeed regardless of whether foo.bar is an attribute or a property. -- Steven -- http://mail.python.org/mailman/listinfo/python-list