Attributes An object in Python can have any number of attributes , which are much like variables, except that they are attached to a specific object, whereas variables are attached to modules or functions. In fact, variables defined in modules are nothing but attributes of module objects. The notation for accessing attributes is always object.attribute . Method names are attributes too, just like function names are variables. Unlike many other object-oriented languages, Python does not provide access control to attributes.
Any code can use and even change any attribute in any object.
Numeric.exp to make sqrt behave like exp . Obviously this is not a good idea, but Python does not try to protect you against your own stupidity. Of course there is a certain chance of accidentally changing an attribute, but in practice this is not a problem. Its world view consists of nothing but objects, names, and name spaces. All data is kept in objects, but modules, functions, classes, and methods are also objects.