Revision: 6994
Updated Code
at June 30, 2008 10:21 by ishikawa
Updated Code
def _mangle_name(self, name): """ Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. Truncation may occur when the mangled name would be longer than 255 characters. When the class name consists of only underscores, no mangling occurs. """ klass = self.__class__.__name__ if name.startswith("__") and not name.endswith("__"): import re if not re.compile(r"^_+$").match(klass): # NOTE: In Python 2.5, no trunction occurred? #name = ("_%s%s" % (klass, name))[0:255] name = ("_%s%s" % (klass, name)) return name
Revision: 6993
Updated Code
at June 30, 2008 10:20 by ishikawa
Updated Code
"""This module provides ``weakref`` related extentions""" import __builtin__ import weakref def _mangle_name(self, name): """ Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. Truncation may occur when the mangled name would be longer than 255 characters. When the class name consists of only underscores, no mangling occurs. """ klass = self.__class__.__name__ if name.startswith("__") and not name.endswith("__"): import re if not re.compile(r"^_+$").match(klass): # NOTE: In Python 2.5, no trunction occurred? #name = ("_%s%s" % (klass, name))[0:255] name = ("_%s%s" % (klass, name)) return name def getter(name): """ Returns getter function for weak referenced attribute. """ def _getter(self): wr = self.__dict__.get(_mangle_name(self, name)) return wr() if wr is not None else None return _getter def setter(name): """ Returns setter function for weak referenced attribute. """ def _setter(self, obj): value = weakref.ref(obj) if obj is not None else None self.__dict__[_mangle_name(self, name)] = value return _setter def deleter(name): """ Returns deleter function for weak referenced attribute. """ def _deleter(self): if _mangle_name(name) in self.__dict__: del self.__dict__[_mangle_name(self, name)] def property(name): return __builtin__.property(getter(name), setter(name), deleter(name))
Revision: 6992
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 30, 2008 10:08 by ishikawa
Initial Code
def _mangle_name(self, name): """ Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. Truncation may occur when the mangled name would be longer than 255 characters. When the class name consists of only underscores, no mangling occurs. """ klass = self.__class__.__name__ if name.startswith("__") and not name.endswith("__"): import re if not re.compile(r"^_+$").match(klass): name = ("_%s%s" % (klass, name))[0:255] return name
Initial URL
Initial Description
Python: Private Variables http://docs.python.org/tut/node11.html#SECTION0011600000000000000000 Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. Truncation may occur when the mangled name would be longer than 255 characters. When the class name consists of only underscores, no mangling occurs.
Initial Title
Name Mangling of Python Private Variables
Initial Tags
python
Initial Language
Python