Chapter 5. Object-Oriented Python
Python
is an object-oriented programming language. Unlike some other
object-oriented languages, Python doesn't force you
to use the object-oriented paradigm exclusively. Python also supports
procedural programming with modules and functions, so you can select
the most suitable programming paradigm for each part of your program.
Generally, the object-oriented paradigm is suitable when you want to
group state (data) and behavior (code) together in handy packets of
functionality. It's also useful when you want to use
some of Python's object-oriented mechanisms covered
in this chapter, such as inheritance or special methods. The
procedural paradigm, based on modules and functions, tends to be
simpler and is more suitable when you don't need any
of the benefits of object-oriented programming. With Python, you
often mix and match the two paradigms.
Python 2.2 and 2.3 are in transition
between two slightly different object models. This chapter starts by
describing the classic object model, which was the only one available
in Python 2.1 and earlier and is still the default model in Python
2.2 and 2.3. The chapter then covers the small differences that
define the powerful new-style object model and discusses how to use
the new-style object model with Python 2.2 and 2.3. Because the
new-style object model builds on the classic one,
you'll need to understand the classic model before
you can learn about the new model. Finally, the chapter covers
special methods for both the classic and new-style object models, as
well as metaclasses for Python 2.2 and later.
The new-style object model will become the default in a future
version of Python. Even though the classic object model is still the
default, I suggest you use the new-style object model when
programming with Python 2.2 and later. Its advantages over the
classic object model, while small, are measurable, and there are
practically no compensating disadvantages. Therefore,
it's simpler just to stick to the new-style object
model, rather than try to decide which model to use each time you
code a new class.
|