On 2019-05-11 12:50, Christopher Barker wrote:
On Sat, May 11, 2019 at 4:06 AM Jeff

 > I'd much rather have some kind of explicit wrapping or cast into
their Python type: I had imagined the wrapped object would identify and
behave as exactly that Python type (or ABC), however, it would be a
*proxy* to the original.

The ABCs are already defined — if you want to make a wrapper proxy
object, you implement the ABC you want to emulate.


Now that I’m thinking about it more, this really covers most use cases:
if you want your object to be converted to a dict by passing it to
dict(), then implement the iteration protocol, returning key-value pairs
that you want. This would work fine for dataclasses, and
SimpleNamespaces, if one wanted to implement that.

The only problem here is if you want to use the standard iteration
protocol for something different -- I can't image what that would be.
Sure, on the general case, maybe, but for a class that has a "natural"
use case for dictifying, how else would you want to iterate over it??

One example would be. . . dicts. Calling dict on a dict gives you a dict, but iterating over the dict just gives you the keys. Certain other mapping types (such as Pandas Series and DataFrames) also have this behavior where iterating over the mapping gives you only the keys.

--
Brendan Barnwell
"Do not follow where the path may lead. Go, instead, where there is no path, and leave a trail."
   --author unknown
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to