New submission from Ryan Pecor <[email protected]>:
After making a class using the @property decorator to implement a getter, using
tab completion that matches the getter function name executes the function.
See below for example (line numbers added, <tab> indicates when the user
presses the tab key):
1 >>> class Foo(object):
2 ... def __init__(self,value):
3 ... self.value = value
4 ... @property
5 ... def print_value(self):
6 ... print("Foo has a value of {}".format(self.value))
7 ...
8 >>> bar = Foo(4)
9 >>> bar.<tab>~~~Foo has a value of 4~~~
10 <tab>~~~Foo has a value of 4~~~
11
12 bar.print_value bar.value
13 >>> bar.p<tab>~~~Foo has a value of 4~~~
14 <tab>rint_value~~~Foo has a value of 4~~~
15 ~~~Foo has a value of 4~~~
16
17 bar.print_value
18 >>> bar.v<tab>alue
I pressed tab after typing "bar." in line 9. It then printed the remainder of
line 9 and moved the cursor to line 10. Pressing tab again prints line 10 and
11 before finally showing the expected output on line 12. lines 13-17 follow
the same steps, but after typing "bar.p" to show that it happens whenever you
tab and it matches the getter. Line 18 shows a correct tab completion resulting
from hitting tab after typing "bar.v" which does not match the getter function.
----------
components: Interpreter Core
messages: 398323
nosy: RPecor
priority: normal
severity: normal
status: open
title: Tab completion executes @property getter function
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue44752>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com