Combining Data and Processing into Class Definitions
In Part I, “Language Basics”, we examined the core statements in the
Python language. In Part II, “Data Structures”, we examined the built-in data
structures available to us as programmers. Using these data structures
gave us some hands-on experience with a number of classes. After using
this variety of built-in objects, we are better prepared to design our own
objects.
We will spend some additional time on Python's flexible notion of
"attribute" in Chapter 25, Properties and Descriptors. It turns out that an
attribute can be a simple instance variable or it can be a method function
that manages an instance variable.
We'll look at Python's decorators in Chapter 26, Decorators; this is handy syntax for assuring that
specific aspects of a family of classes are implemented consistently.
We'll look at the various ways to define properties in objects.properties.
Additionally, we'll look how we can manage more sophisticated object
protocols in Chapter 27, Managing Contexts: the with Statement.
Data Types. We've looked at most of these data types in Part II, “Data Structures”. This is a kind of road-map of some of the most
important built-in features.
None. A unique constant, handy as a placeholder when no other value
is appropriate. A number of built-in functions return values of
None to indicate that no useful work can be
done.
NotImplemented. A unique constant, returned by special methods to indicate
that the method is not implemented. See the section called “Special Method Names” for more information.
Numeric types have relatively simple values.
Boolean. A variety of values are treated as logically false:
False, 0, None,
"", (),
[], {}. All other values
are logically True.
Integer. Typically 32-bit numbers with a range of -2,147,483,648
through 2,147,483,647. On some platforms, these may be 64-bit
numbers.
Long. These are specially coded integers of arbitrary length.
They grow as needed to accurately represent numeric
results.
Float. These are floating point, scientific notation numbers.
They are represented using the platform's floating point
notation, so ranges and precisions vary. Typically these are
called "double precision" in other languages, and are often
64-bits long.
Complex. These are a pair of floating point numbers of the form
(a+bj),
where a is the real part and
b is the “imaginary”
part.
Sequence. Collections of objects identified by their order or
position.
Immutable sequences are created as needed and can be used
but never changed.
String. A string is a sequence of individual ASCII
characters.
Unicode. A Unicode string is a sequence of individual Unicode
characters.
Tuple. A tuple is a simple comma-separated sequence of Python
items in ()'s.
Mutable sequences can be created, appended-to, changed,
and have elements deleted
List. A list is a comma-separated sequence of Python items
in []'s. Operations like
append and
pop can be used to change
lists.
Set and Frozenset. Collections of objects. The collection is neither ordered nor
keyed. Each item stands for itself. A set is
mutable; we can append-to, change and delete elements from a set. A
frozenset is immutable.
Mapping. Collections of objects identified by keys instead of
order.
Dictionary. A dictionary is a collection of objects which are indexed
by other objects. It is like a sequence of
key:value pairs, where keys can be found
efficiently. Any Python object can be used as the value. Keys
have a small restriction: mutable lists and other mappings
cannot be used as keys. It is created with a comma-separated
list of key:value pairs in
{}'s.
Callable. When we create a function with the def
statement, we create a callable object. We
can also define our own classes with a special method of
__call__, to make a callable object that
behaves like a function.
File. Python supports several operations on files, most notably
reading, writing and closing. Python also provides numerous modules
for interacting with the operating system's management of
files.
There are numerous additional data structures that are part of
Python's implementation internals; they are beyond the scope of this
book.
One of the most powerful and useful features of Python, is its
ability to define new classes. The next chapters
will introduce the class and the basics of object-oriented
programming.