In Python, a class definition is an executable statement.
To quote the documentation:
7.7. Class definitions
A class definition defines a class object (see section The standard type hierarchy):
classdef ::= "class" classname [inheritance] ":" suite
inheritance ::= "(" [expression_list] ")"
classname ::= identifier
A class
definition is an executable statement.
It first evaluates the inheritance
list, if present. Each item in the
inheritance list should evaluate to a
class object or class type which
allows subclassing. The class’s suite
is then executed in a new execution
frame (see section Naming and
binding), using a newly created local
namespace and the original global
namespace. (Usually, the suite
contains only function definitions.)
When the class’s suite finishes
execution, its execution frame is
discarded but its local namespace is
saved. [4] A class object is then
created using the inheritance list for
the base classes and the saved local
namespace for the attribute
dictionary. The class name is bound to
this class object in the original
local namespace.
Programmer’s note: Variables defined
in the class definition are class
variables; they are shared by all
instances. To create instance
variables, they can be set in a method
with self.name = value. Both class and
instance variables are accessible
through the notation “self.name“, and
an instance variable hides a class
variable with the same name when
accessed in this way. Class variables
can be used as defaults for instance
variables, but using mutable values
there can lead to unexpected results.
For new-style classes, descriptors can
be used to create instance variables
with different implementation details.
Class definitions, like function
definitions, may be wrapped by one or
more decorator expressions. The
evaluation rules for the decorator
expressions are the same as for
f> unctions. The result must be a class
object, which is then bound to the
class name.