Hi all,

I have a slight variant of the decorator proposal.
Rather than specify a count, let the decorator implement the typeshed dunder convention:

@positional_only
    def replace(self, __old, __new, count=-1):


(I imagine this decorator would also treat "self" as position_only,
so no need for __self.)

Pros:
1. Consistent with the typeshed convention.
2. Avoids a count.
3. Strictly opt-in, so hopefully keeps those @#?! underscore preservationists from picketing my lawn (again!).

Stephan



2017-03-02 4:16 GMT+01:00 Chris Barker <chris.barker@noaa.gov>:
On Wed, Mar 1, 2017 at 2:16 PM, אלעזר <elazarg@gmail.com> wrote:
I like the idea, but I wanted to note that since it has no meaning from the point of view of the defined function, it can be done with a magic decorator, so new syntax is not required:

@positional_only[:4]
def replace(self, old, new, count=-1):
    ...

I"m confused, what does the [:4] mean?

if you want old and new to be positional only, wouldn't it be something like:

@positional_only(3)
    def replace(self, old, new, count=-1):
        ...

i.e. the first three parameters are positional only.

and why indexing/slice syntax???

+! on the idea -- still on the fence about syntax.

-CHB


--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker@noaa.gov

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/