On Sat, Jan 12, 2002 at 01:07:33PM +0100, Frank Barknecht wrote: > Tim Payne hat gesagt: // Tim Payne wrote: > > > I was also wondering why so many of the variables are named like _name > > or _password? I've seen this sort of naming convention a lot in python, > > but I'm unsure of what cases this is used in. > > These are a kind of "private" variables. Names starting with an _underscore > don't get imported if you do an "from foo import *"
Python has two levels of private variables. _variable works as above. Not only are they ignored by "from foo import *", but they are a signal to users of the class, "Don't use me directly." Sometimes you have to anyway, but those are borderline cases. The other level of private variable, __classAttributeOrMethod, works only inside a class definition. When the module is compiled, "__" is converted to "className_". This prevents subclasses, users and mixin classes from accidentally overriding them with same-name attributes that are used for a different purpose. Variables/attributes with an underscore at both ends; e.g., __name__, are not private. Instead, Python's predefined variables use this scheme to indicate the variable has some special effect. WebKit (but I don't know about UserKit) has sets of similarly-named attributes and methods. In each set, _variable is private. variable() is used to read the value, setVariable(newValue) to set it. For multi-value variables (dictionary-like), variables() returns a read-only dictionary of all values; e.g., fields(). There has been discussion about using Python 2.2's new "properties" feature to combine _variable, variable() and setVariable() into one property or "smart attribute" called simply variable, but no decision has been made yet. -- -Mike (Iron) Orr, [EMAIL PROTECTED] (if mail problems: [EMAIL PROTECTED]) http://iron.cx/ English * Esperanto * Russkiy * Deutsch * Espan~ol _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss