GNU Info

Info Node: (python2.1-tut.info)Class Objects

(python2.1-tut.info)Class Objects


Next: Instance Objects Prev: Class Definition Syntax Up: A First Look at Classes
Enter node , (file) or (file)node

Class Objects
-------------

Class objects support two kinds of operations: attribute references and
instantiation.

_Attribute references_ use the standard syntax used for all attribute
references in Python: `obj.name'.  Valid attribute names are all the
names that were in the class's namespace when the class object was
created.  So, if the class definition looked like this:

     class MyClass:
         "A simple example class"
         i = 12345
         def f(self):
             return 'hello world'

then `MyClass.i' and `MyClass.f' are valid attribute references,
returning an integer and a method object, respectively.  Class
attributes can also be assigned to, so you can change the value of
`MyClass.i' by assignment.  `__doc__' is also a valid attribute,
returning the docstring belonging to the class: `"A simple example
class"').

Class _instantiation_ uses function notation.  Just pretend that the
class object is a parameterless function that returns a new instance of
the class.  For example (assuming the above class):

     x = MyClass()

creates a new _instance_ of the class and assigns this object to the
local variable `x'.

The instantiation operation ("calling" a class object) creates an empty
object.  Many classes like to create objects in a known initial state.
Therefore a class may define a special method named `__init__()', like
this:

         def __init__(self):
             self.data = []

When a class defines an `__init__()' method, class instantiation
automatically invokes `__init__()' for the newly-created class
instance.  So in this example, a new, initialized instance can be
obtained by:

     x = MyClass()

Of course, the `__init__()' method may have arguments for greater
flexibility.  In that case, arguments given to the class instantiation
operator are passed on to `__init__()'.  For example,

     >>> class Complex:
     ...     def __init__(self, realpart, imagpart):
     ...         self.r = realpart
     ...         self.i = imagpart
     ...
     >>> x = Complex(3.0,-4.5)
     >>> x.r, x.i
     (3.0, -4.5)


automatically generated by info2www version 1.2.2.9