Chris Angelico wrote:
> On Wed, 27 Jul 2022 at 21:54, Mathew Elman mathew.el...@ocado.com wrote:
> > I don't see why you couldn't. I guess what they do depends if any of these 
> > have defaults? Which I think they do not in this case, right?
> > If they were non vanilla dictionaries that had a default e.g.
> > class SomeDict(dict):
> >     def __getitem__(self, item=None):
> >         return super().__getitem__(item)
> > def __contains__(self, item=None):
> >     return super().__contains__(item)
> > 
> > So Undefined would trigger a default, but only if there is one?
> > print(b[1]) would still print Undefined because print's first argument 
> > doesn't have a default.
> > But print doesn't have a first argument - it accepts *args. So
> Undefined still counts as an argument, except when there's a default,
> at which point it counts as a non-argument?

Yes, I guess you could do it so that for var args it was treated as a non 
argument? so print(Undefined) == print() ? But that seems even more 
surprising...

> > a in c would be False.
> > That is VERY surprising behaviour. For literally any other object,
> that would be True. But then, it would be surprising in other ways if
> Undefined behaved like a normal object.
> > c[a] would return c[None], which would raise an error here because None 
> > isn't in the mapping
> > Again, very surprising, if putting a value into a mapping doesn't
> result in that value being in the mapping.

Yes, compared with other objects, there would need to be some surprising 
behaviour because it isn't a concept in python already. 
You could fix this specific problem with mappings by changing Undefined to not 
be hashable, but that is definitely a bandaid.

> > Again, I am not pro this idea, just answering the questions you're asking 
> > as I see them :)
> > Yeah. I think you're doing a great job of showing why this is a bad idea :)

I do think the desire to fix the "wrapper not needing to know the defaults of 
wrapped" problem is admirable.
Is this the right approach? No, I think not.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/4VIQAKFNSKE7BV54NF3DGC4VNTO7BWEJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to