<br><br><div class="gmail_quote">On 7 June 2010 11:51, George Sakkis <span dir="ltr"><<a href="mailto:george.sakkis@gmail.com">george.sakkis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I'm wondering if there is any downside in making properties callable:<br>
<br>
class callableproperty(property):<br>
    def __call__(self, obj):<br>
        return self.fget(obj)<br>
<br>
class Foo(object):<br>
    @property<br>
    def bar(self):<br>
        return self<br>
<br>
    @callableproperty<br>
    def baz(self):<br>
        return self<br>
<br>
<br>
>>> foo = Foo()<br>
>>> foo.baz is Foo.baz(foo)<br>
True<br>
>>> foo.bar is Foo.bar(foo)<br>
...<br>
TypeError: 'property' object is not callable<br>
<br>
<br>
As for the motivation, having callable properties would make it easier<br>
to stack them with other decorators that typically expect callables.<br>
Am I missing something ?<br></blockquote><div><br>Not sure it would specifically help with stacking decorators on properties though. If you get them in the wrong order then you would not end up with a property descriptor in the class dict but with an arbitrary callable (or function which would be wrapped as a method) that no longer behaves as a property.<br>
<br>Michael<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
George<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><a href="http://www.voidspace.org.uk">http://www.voidspace.org.uk</a><br><br><br>