[New-bugs-announce] [issue27793] Double underscore variables in module are mangled when used in class
avraf
report at bugs.python.org
Thu Aug 18 08:27:26 EDT 2016
New submission from avraf:
import re
__no_spaces_pattern = r'\S+'
__match_chars_until_space = re.compile(__no_spaces_pattern).match
__match_chars_from_last_space = re.compile(__no_spaces_pattern + '$').match
def __get_chars_until_space(name):
return __match_chars_until_space(name).group()
def __get_chars_from_last_space(name):
return __match_chars_from_last_space(name).group()
__random_unique_five_digit_number = 12345
__random_id_generator = lambda: __random_unique_five_digit_number
class Person(object):
def __init__(self, name):
self.name = name
@property
def first_name(self):
return __get_chars_until_space(self.name)
@property
def last_name(self):
return __get_chars_from_last_space(self.name)
I get this error when importing and running in another file.
It seems python mangles every occurrence of double underscores seen in a class. Even if the double underscores variable appears in the body of a method and belongs to the module.
This behavior is very unexpected.
Traceback (most recent call last):
File "beef.py", line 5, in <module>
print bob.first_name
File "/home/dude/style/static_private_methods/real_static_private_functions.py", line 22, in first_name
return __get_chars_until_space(self.name)
NameError: global name '_Person__get_chars_until_space' is not defined
----------
messages: 273023
nosy: avraf
priority: normal
severity: normal
status: open
title: Double underscore variables in module are mangled when used in class
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue27793>
_______________________________________
More information about the New-bugs-announce
mailing list