On Sat, May 7, 2022 at 6:28 AM Chris Angelico <[email protected]> wrote:
> > > What would this do?
> > >
> > > def __init__(self, spam.x, eggs.y): pass
> > >
> > > How about this?
> > >
> > > def __init__(self, x, x.y): pass
> > IMO, both of those should be errors. This syntax only makes much
> > sense for the first formal argument of a method definition,
I really don't like this --hard to put my finger on it exactly, but I think
it's because Python doesn't use any magic in method definitions. There is a
touch of magic in binding methods to classes, but that comes later.
so while:
class Foo:
def method(self, ...)
Looks special, that's only because:
- it's defined in the class definition directly
- its using the self convention
But
class Foo:
pass
def method(fred, ...):
pass
Foo.method = method
Means exactly the same thing.
So then we have:
def fun(foo, foo.bar):
...
Is legal, but:
def fun(this, foo, foo.bar):
...
Is not.
> it's the only formal argument which has a fixed definition.
yes, but only in one specific context -- so I don't like it leaking out of
that context.
> I'd define it very simply. For positional args, these should be
> exactly equivalent:
>
> def func(self, x, x.y):
> ...
>
> def func(*args):
> self, x, x.y = args
> ...
>
I like that -- it's simple to understand, clear, it doesn't only make sense
for methods, and it might even be useful in other contexts [*].
I think:
def fun(x, y.z):
...
would work fine, too. e.g. you wouldn't be restricted to using other
parameters.
That being said, I'm still -1 on the idea.
[*] -- the "other contexts" is key for me -- if someone can show that this
is a useful pattern in other contexts, I think it would be a stronger
proposal.
-CHB
--
Christopher Barker, PhD (Chris)
Python Language Consulting
- Teaching
- Scientific Software Development
- Desktop GUI and Web Development
- wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/4OFW6LVJ5DUMUT3O7HL4FFMAUY3QKYOF/
Code of Conduct: http://python.org/psf/codeofconduct/