[Python-ideas] Adding __getter__ to compliment __iter__.

Clay Sweetser clay.sweetser at gmail.com
Thu Jul 18 08:51:08 CEST 2013


What is the difference between this "getter protocol" and using a
generator's send method?
On Jul 18, 2013 2:47 AM, "Ron Adam" <ron3200 at gmail.com> wrote:
>>> These methods would be called by a getter function which starts it by
> calling next on it before returning it.
>>> def getter(container):
> """ Get a getter from a container object. """
> g = container.__getter__()
> next(g)
> return g
>>> On 07/18/2013 01:12 AM, Ron Adam wrote:
>>>>>>> A __getter__ method on a list object might be..
>>>> def __getter__(self):
>> def g():
>> seq = yield
>> self.extend(seq)
>> return self
>> gtr = g()
>> next(gtr) # start it, so send method will work.
>> return gtr
>>>> Replace these last three lines with...
>> return g()
>>> And the same for the rest of these.
> Ron
>>>> And on a dictionary:
>>>> def __getter__(self):
>> def g():
>> seq = yield
>> self.update(seq)
>> return self
>> getter = g()
>> next(getter)
>> return getter
>>>>>> on a string: (bytes and tuples are very much like this.)
>>>> def __getter__(self):
>> def g():
>> seq = yield
>> return self + seq
>> getter = g()
>> next(getter)
>> return getter
>>>> etc... It's pretty simple, but builtin versions of these would not need to
>> use the 'extend', 'update', or '__add__' methods, but can do the eqivalent
>> directly bypassing the method calls.
>>>>>> Then what you have is a input protocol that complements the iter output
>> protocol.
>>>> ______________________________**_________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/**mailman/listinfo/python-ideas<http://mail.python.org/mailman/listinfo/python-ideas>
>-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130718/89caeb3b/attachment.html>


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /