blob: abdb939d1aee36c427dfee397f2e8afa9b8983ee [file] [log] [blame]
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001:mod:`types` --- Dynamic type creation and names for built-in types
2===================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: types
5 :synopsis: Names for built-in types.
6
Raymond Hettingera1993682011-01-27 01:20:32 +00007**Source code:** :source:`Lib/types.py`
8
9--------------
Georg Brandl116aa622007-08-15 14:28:22 +000010
Nick Coghlan7fc570a2012-05-20 02:34:13 +100011This module defines utility function to assist in dynamic creation of
12new types.
13
14It also defines names for some object types that are used by the standard
Georg Brandld66a0292008-08-23 15:14:57 +000015Python interpreter, but not exposed as builtins like :class:`int` or
Nick Coghlan7fc570a2012-05-20 02:34:13 +100016:class:`str` are.
Georg Brandl116aa622007-08-15 14:28:22 +000017
R David Murray13cc8832014-02-25 16:03:14 -050018Finally, it provides some additional type-related utility classes and functions
19that are not fundamental enough to be builtins.
20
Christian Heimesc9543e42007-11-28 08:28:28 +000021
Nick Coghlan7fc570a2012-05-20 02:34:13 +100022Dynamic Type Creation
23---------------------
24
25.. function:: new_class(name, bases=(), kwds=None, exec_body=None)
26
27 Creates a class object dynamically using the appropriate metaclass.
28
Nick Coghlana0cf90e2012-05-30 22:17:30 +100029 The first three arguments are the components that make up a class
30 definition header: the class name, the base classes (in order), the
31 keyword arguments (such as ``metaclass``).
Nick Coghlan7fc570a2012-05-20 02:34:13 +100032
Nick Coghlana0cf90e2012-05-30 22:17:30 +100033 The *exec_body* argument is a callback that is used to populate the
34 freshly created class namespace. It should accept the class namespace
35 as its sole argument and update the namespace directly with the class
36 contents. If no callback is provided, it has the same effect as passing
37 in ``lambda ns: ns``.
Nick Coghlan7fc570a2012-05-20 02:34:13 +100038
Nick Coghlana497b442012-05-22 23:02:00 +100039 .. versionadded:: 3.3
40
Nick Coghlan7fc570a2012-05-20 02:34:13 +100041.. function:: prepare_class(name, bases=(), kwds=None)
42
43 Calculates the appropriate metaclass and creates the class namespace.
44
Nick Coghlana0cf90e2012-05-30 22:17:30 +100045 The arguments are the components that make up a class definition header:
46 the class name, the base classes (in order) and the keyword arguments
47 (such as ``metaclass``).
Nick Coghlan7fc570a2012-05-20 02:34:13 +100048
49 The return value is a 3-tuple: ``metaclass, namespace, kwds``
50
Nick Coghlana0cf90e2012-05-30 22:17:30 +100051 *metaclass* is the appropriate metaclass, *namespace* is the
52 prepared class namespace and *kwds* is an updated copy of the passed
53 in *kwds* argument with any ``'metaclass'`` entry removed. If no *kwds*
54 argument is passed in, this will be an empty dict.
Nick Coghlan7fc570a2012-05-20 02:34:13 +100055
Nick Coghlana497b442012-05-22 23:02:00 +100056 .. versionadded:: 3.3
Nick Coghlan7fc570a2012-05-20 02:34:13 +100057
58.. seealso::
59
Nick Coghlana0cf90e2012-05-30 22:17:30 +100060 :ref:`metaclasses`
61 Full details of the class creation process supported by these functions
62
Nick Coghlan7fc570a2012-05-20 02:34:13 +100063 :pep:`3115` - Metaclasses in Python 3000
64 Introduced the ``__prepare__`` namespace hook
65
66
67Standard Interpreter Types
68--------------------------
69
70This module provides names for many of the types that are required to
71implement a Python interpreter. It deliberately avoids including some of
72the types that arise only incidentally during processing such as the
73``listiterator`` type.
74
Ezio Melottid26c3062012-08-26 07:33:10 +030075Typical use of these names is for :func:`isinstance` or
Nick Coghlan7fc570a2012-05-20 02:34:13 +100076:func:`issubclass` checks.
77
78Standard names are defined for the following types:
Georg Brandl116aa622007-08-15 14:28:22 +000079
Georg Brandl116aa622007-08-15 14:28:22 +000080.. data:: FunctionType
Georg Brandla1e9ef72007-09-04 07:23:09 +000081 LambdaType
Georg Brandl116aa622007-08-15 14:28:22 +000082
Nick Coghlan7fc570a2012-05-20 02:34:13 +100083 The type of user-defined functions and functions created by
84 :keyword:`lambda` expressions.
Georg Brandl116aa622007-08-15 14:28:22 +000085
86
Georg Brandl116aa622007-08-15 14:28:22 +000087.. data:: GeneratorType
88
Georg Brandl9afde1c2007-11-01 20:32:30 +000089 The type of :term:`generator`-iterator objects, produced by calling a
90 generator function.
Georg Brandl116aa622007-08-15 14:28:22 +000091
Georg Brandl116aa622007-08-15 14:28:22 +000092
93.. data:: CodeType
94
95 .. index:: builtin: compile
96
97 The type for code objects such as returned by :func:`compile`.
98
99
Georg Brandl116aa622007-08-15 14:28:22 +0000100.. data:: MethodType
101
102 The type of methods of user-defined class instances.
103
104
Georg Brandl116aa622007-08-15 14:28:22 +0000105.. data:: BuiltinFunctionType
Georg Brandla1e9ef72007-09-04 07:23:09 +0000106 BuiltinMethodType
Georg Brandl116aa622007-08-15 14:28:22 +0000107
Georg Brandld66a0292008-08-23 15:14:57 +0000108 The type of built-in functions like :func:`len` or :func:`sys.exit`, and
109 methods of built-in classes. (Here, the term "built-in" means "written in
110 C".)
Georg Brandl116aa622007-08-15 14:28:22 +0000111
112
Brett Cannon2d772042013-06-14 19:19:57 -0400113.. class:: ModuleType(name, doc=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000114
Brett Cannon2d772042013-06-14 19:19:57 -0400115 The type of :term:`modules <module>`. Constructor takes the name of the
116 module to be created and optionally its :term:`docstring`.
117
118 .. attribute:: __doc__
119
120 The :term:`docstring` of the module. Defaults to ``None``.
121
122 .. attribute:: __loader__
123
124 The :term:`loader` which loaded the module. Defaults to ``None``.
125
126 .. versionchanged:: 3.4
127 Defaults to ``None``. Previously the attribute was optional.
128
129 .. attribute:: __name__
130
131 The name of the module.
132
133 .. attribute:: __package__
134
135 Which :term:`package` a module belongs to. If the module is top-level
136 (i.e. not a part of any specific package) then the attribute should be set
137 to ``''``, else it should be set to the name of the package (which can be
138 :attr:`__name__` if the module is a package itself). Defaults to ``None``.
139
140 .. versionchanged:: 3.4
141 Defaults to ``None``. Previously the attribute was optional.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143
Georg Brandl116aa622007-08-15 14:28:22 +0000144.. data:: TracebackType
145
146 The type of traceback objects such as found in ``sys.exc_info()[2]``.
147
148
149.. data:: FrameType
150
151 The type of frame objects such as found in ``tb.tb_frame`` if ``tb`` is a
152 traceback object.
153
154
Georg Brandl116aa622007-08-15 14:28:22 +0000155.. data:: GetSetDescriptorType
156
Christian Heimes5e696852008-04-09 08:37:03 +0000157 The type of objects defined in extension modules with ``PyGetSetDef``, such
158 as ``FrameType.f_locals`` or ``array.array.typecode``. This type is used as
159 descriptor for object attributes; it has the same purpose as the
160 :class:`property` type, but for classes defined in extension modules.
Georg Brandl116aa622007-08-15 14:28:22 +0000161
Georg Brandl116aa622007-08-15 14:28:22 +0000162
163.. data:: MemberDescriptorType
164
Christian Heimes5e696852008-04-09 08:37:03 +0000165 The type of objects defined in extension modules with ``PyMemberDef``, such
166 as ``datetime.timedelta.days``. This type is used as descriptor for simple C
167 data members which use standard conversion functions; it has the same purpose
168 as the :class:`property` type, but for classes defined in extension modules.
Georg Brandl495f7b52009-10-27 15:28:25 +0000169
170 .. impl-detail::
171
172 In other implementations of Python, this type may be identical to
173 ``GetSetDescriptorType``.
Victor Stinner0db176f2012-04-16 00:16:30 +0200174
175.. class:: MappingProxyType(mapping)
176
177 Read-only proxy of a mapping. It provides a dynamic view on the mapping's
178 entries, which means that when the mapping changes, the view reflects these
179 changes.
180
181 .. versionadded:: 3.3
182
183 .. describe:: key in proxy
184
185 Return ``True`` if the underlying mapping has a key *key*, else
186 ``False``.
187
188 .. describe:: proxy[key]
189
190 Return the item of the underlying mapping with key *key*. Raises a
191 :exc:`KeyError` if *key* is not in the underlying mapping.
192
193 .. describe:: iter(proxy)
194
195 Return an iterator over the keys of the underlying mapping. This is a
196 shortcut for ``iter(proxy.keys())``.
197
198 .. describe:: len(proxy)
199
200 Return the number of items in the underlying mapping.
201
202 .. method:: copy()
203
204 Return a shallow copy of the underlying mapping.
205
206 .. method:: get(key[, default])
207
208 Return the value for *key* if *key* is in the underlying mapping, else
209 *default*. If *default* is not given, it defaults to ``None``, so that
210 this method never raises a :exc:`KeyError`.
211
212 .. method:: items()
213
214 Return a new view of the underlying mapping's items (``(key, value)``
215 pairs).
216
217 .. method:: keys()
218
219 Return a new view of the underlying mapping's keys.
220
221 .. method:: values()
222
223 Return a new view of the underlying mapping's values.
224
225
R David Murray13cc8832014-02-25 16:03:14 -0500226Additional Utility Classes and Functions
227----------------------------------------
228
Barry Warsaw409da152012-06-03 16:18:47 -0400229.. class:: SimpleNamespace
230
231 A simple :class:`object` subclass that provides attribute access to its
232 namespace, as well as a meaningful repr.
233
234 Unlike :class:`object`, with ``SimpleNamespace`` you can add and remove
235 attributes. If a ``SimpleNamespace`` object is initialized with keyword
236 arguments, those are directly added to the underlying namespace.
237
238 The type is roughly equivalent to the following code::
239
240 class SimpleNamespace:
241 def __init__(self, **kwargs):
242 self.__dict__.update(kwargs)
243 def __repr__(self):
244 keys = sorted(self.__dict__)
245 items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys)
246 return "{}({})".format(type(self).__name__, ", ".join(items))
Eric Snowb5c8f922013-02-16 16:32:39 -0700247 def __eq__(self, other):
248 return self.__dict__ == other.__dict__
Barry Warsaw409da152012-06-03 16:18:47 -0400249
250 ``SimpleNamespace`` may be useful as a replacement for ``class NS: pass``.
251 However, for a structured record type use :func:`~collections.namedtuple`
252 instead.
253
254 .. versionadded:: 3.3
R David Murray13cc8832014-02-25 16:03:14 -0500255
256
257.. function:: DynamicClassAttribute(fget=None, fset=None, fdel=None, doc=None)
258
259 Route attribute access on a class to __getattr__.
260
261 This is a descriptor, used to define attributes that act differently when
262 accessed through an instance and through a class. Instance access remains
263 normal, but access to an attribute through a class will be routed to the
264 class's __getattr__ method; this is done by raising AttributeError.
265
266 This allows one to have properties active on an instance, and have virtual
267 attributes on the class with the same name (see Enum for an example).
268
269 .. versionadded:: 3.4