Implement logic on object.attribute and object.attribute()

Chris Angelico rosuav at gmail.com
Sun Nov 24 09:13:06 EST 2013


On Mon, Nov 25, 2013 at 12:45 AM, Steven D'Aprano
<steve+comp.lang.python at pearwood.info> wrote:
> Not quite impossible. All you need is an object that behaves like a
> string, except it has a __call__ method. Here's a sketch of a solution,
> completely untested.
>
> class Magic_HTTP_Thing:
>     @property
>     def attribute(self):
>         result = CallableStr(self.do_get())
>         result.function = lambda: self.do_put()

Problem with that is that it'll still call do_get immediately. You'd
have to somehow defer this call until it's actually _used_, which is
why I dropped a mention of "converting to str?" - which would
presumably be a __str__ method. But I still don't like the API.

ChrisA



More information about the Python-list mailing list