1 2.. _datamodel: 3 4********** 5Data model 6********** 7 8 9.. _objects: 10 11Objects, values and types 12========================= 13 14.. index:: 15 single: object 16 single: data 17 18:dfn:`Objects` are Python's abstraction for data. All data in a Python program 19is represented by objects or by relations between objects. (In a sense, and in 20conformance to Von Neumann's model of a "stored program computer", code is also 21represented by objects.) 22 23.. index:: 24 builtin: id 25 builtin: type 26 single: identity of an object 27 single: value of an object 28 single: type of an object 29 single: mutable object 30 single: immutable object 31 32.. XXX it *is* now possible in some cases to change an object's 33 type, under certain controlled conditions 34 35Every object has an identity, a type and a value. An object's *identity* never 36changes once it has been created; you may think of it as the object's address in 37memory. The ':keyword:`is`' operator compares the identity of two objects; the 38:func:`id` function returns an integer representing its identity. 39 40.. impl-detail:: 41 42 For CPython, ``id(x)`` is the memory address where ``x`` is stored. 43 44An object's type determines the operations that the object supports (e.g., "does 45it have a length?") and also defines the possible values for objects of that 46type. The :func:`type` function returns an object's type (which is an object 47itself). Like its identity, an object's :dfn:`type` is also unchangeable. 48[#]_ 49 50The *value* of some objects can change. Objects whose value can 51change are said to be *mutable*; objects whose value is unchangeable once they 52are created are called *immutable*. (The value of an immutable container object 53that contains a reference to a mutable object can change when the latter's value 54is changed; however the container is still considered immutable, because the 55collection of objects it contains cannot be changed. So, immutability is not 56strictly the same as having an unchangeable value, it is more subtle.) An 57object's mutability is determined by its type; for instance, numbers, strings 58and tuples are immutable, while dictionaries and lists are mutable. 59 60.. index:: 61 single: garbage collection 62 single: reference counting 63 single: unreachable object 64 65Objects are never explicitly destroyed; however, when they become unreachable 66they may be garbage-collected. An implementation is allowed to postpone garbage 67collection or omit it altogether --- it is a matter of implementation quality 68how garbage collection is implemented, as long as no objects are collected that 69are still reachable. 70 71.. impl-detail:: 72 73 CPython currently uses a reference-counting scheme with (optional) delayed 74 detection of cyclically linked garbage, which collects most objects as soon 75 as they become unreachable, but is not guaranteed to collect garbage 76 containing circular references. See the documentation of the :mod:`gc` 77 module for information on controlling the collection of cyclic garbage. 78 Other implementations act differently and CPython may change. 79 Do not depend on immediate finalization of objects when they become 80 unreachable (so you should always close files explicitly). 81 82Note that the use of the implementation's tracing or debugging facilities may 83keep objects alive that would normally be collectable. Also note that catching 84an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep 85objects alive. 86 87Some objects contain references to "external" resources such as open files or 88windows. It is understood that these resources are freed when the object is 89garbage-collected, but since garbage collection is not guaranteed to happen, 90such objects also provide an explicit way to release the external resource, 91usually a :meth:`close` method. Programs are strongly recommended to explicitly 92close such objects. The ':keyword:`try`...\ :keyword:`finally`' statement 93and the ':keyword:`with`' statement provide convenient ways to do this. 94 95.. index:: single: container 96 97Some objects contain references to other objects; these are called *containers*. 98Examples of containers are tuples, lists and dictionaries. The references are 99part of a container's value. In most cases, when we talk about the value of a 100container, we imply the values, not the identities of the contained objects; 101however, when we talk about the mutability of a container, only the identities 102of the immediately contained objects are implied. So, if an immutable container 103(like a tuple) contains a reference to a mutable object, its value changes if 104that mutable object is changed. 105 106Types affect almost all aspects of object behavior. Even the importance of 107object identity is affected in some sense: for immutable types, operations that 108compute new values may actually return a reference to any existing object with 109the same type and value, while for mutable objects this is not allowed. E.g., 110after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object 111with the value one, depending on the implementation, but after ``c = []; d = 112[]``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly 113created empty lists. (Note that ``c = d = []`` assigns the same object to both 114``c`` and ``d``.) 115 116 117.. _types: 118 119The standard type hierarchy 120=========================== 121 122.. index:: 123 single: type 124 pair: data; type 125 pair: type; hierarchy 126 pair: extension; module 127 pair: C; language 128 129Below is a list of the types that are built into Python. Extension modules 130(written in C, Java, or other languages, depending on the implementation) can 131define additional types. Future versions of Python may add types to the type 132hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.), 133although such additions will often be provided via the standard library instead. 134 135.. index:: 136 single: attribute 137 pair: special; attribute 138 triple: generic; special; attribute 139 140Some of the type descriptions below contain a paragraph listing 'special 141attributes.' These are attributes that provide access to the implementation and 142are not intended for general use. Their definition may change in the future. 143 144None 145 .. index:: object: None 146 147 This type has a single value. There is a single object with this value. This 148 object is accessed through the built-in name ``None``. It is used to signify the 149 absence of a value in many situations, e.g., it is returned from functions that 150 don't explicitly return anything. Its truth value is false. 151 152NotImplemented 153 .. index:: object: NotImplemented 154 155 This type has a single value. There is a single object with this value. This 156 object is accessed through the built-in name ``NotImplemented``. Numeric methods 157 and rich comparison methods should return this value if they do not implement the 158 operation for the operands provided. (The interpreter will then try the 159 reflected operation, or some other fallback, depending on the operator.) It 160 should not be evaluated in a boolean context. 161 162 See 163 :ref:`implementing-the-arithmetic-operations` 164 for more details. 165 166 .. versionchanged:: 3.9 167 Evaluating ``NotImplemented`` in a boolean context is deprecated. While 168 it currently evaluates as true, it will emit a :exc:`DeprecationWarning`. 169 It will raise a :exc:`TypeError` in a future version of Python. 170 171 172Ellipsis 173 .. index:: 174 object: Ellipsis 175 single: ...; ellipsis literal 176 177 This type has a single value. There is a single object with this value. This 178 object is accessed through the literal ``...`` or the built-in name 179 ``Ellipsis``. Its truth value is true. 180 181:class:`numbers.Number` 182 .. index:: object: numeric 183 184 These are created by numeric literals and returned as results by arithmetic 185 operators and arithmetic built-in functions. Numeric objects are immutable; 186 once created their value never changes. Python numbers are of course strongly 187 related to mathematical numbers, but subject to the limitations of numerical 188 representation in computers. 189 190 The string representations of the numeric classes, computed by 191 :meth:`~object.__repr__` and :meth:`~object.__str__`, have the following 192 properties: 193 194 * They are valid numeric literals which, when passed to their 195 class constructor, produce an object having the value of the 196 original numeric. 197 198 * The representation is in base 10, when possible. 199 200 * Leading zeros, possibly excepting a single zero before a 201 decimal point, are not shown. 202 203 * Trailing zeros, possibly excepting a single zero after a 204 decimal point, are not shown. 205 206 * A sign is shown only when the number is negative. 207 208 Python distinguishes between integers, floating point numbers, and complex 209 numbers: 210 211 :class:`numbers.Integral` 212 .. index:: object: integer 213 214 These represent elements from the mathematical set of integers (positive and 215 negative). 216 217 There are two types of integers: 218 219 Integers (:class:`int`) 220 These represent numbers in an unlimited range, subject to available (virtual) 221 memory only. For the purpose of shift and mask operations, a binary 222 representation is assumed, and negative numbers are represented in a variant of 223 2's complement which gives the illusion of an infinite string of sign bits 224 extending to the left. 225 226 Booleans (:class:`bool`) 227 .. index:: 228 object: Boolean 229 single: False 230 single: True 231 232 These represent the truth values False and True. The two objects representing 233 the values ``False`` and ``True`` are the only Boolean objects. The Boolean type is a 234 subtype of the integer type, and Boolean values behave like the values 0 and 1, 235 respectively, in almost all contexts, the exception being that when converted to 236 a string, the strings ``"False"`` or ``"True"`` are returned, respectively. 237 238 .. index:: pair: integer; representation 239 240 The rules for integer representation are intended to give the most meaningful 241 interpretation of shift and mask operations involving negative integers. 242 243 :class:`numbers.Real` (:class:`float`) 244 .. index:: 245 object: floating point 246 pair: floating point; number 247 pair: C; language 248 pair: Java; language 249 250 These represent machine-level double precision floating point numbers. You are 251 at the mercy of the underlying machine architecture (and C or Java 252 implementation) for the accepted range and handling of overflow. Python does not 253 support single-precision floating point numbers; the savings in processor and 254 memory usage that are usually the reason for using these are dwarfed by the 255 overhead of using objects in Python, so there is no reason to complicate the 256 language with two kinds of floating point numbers. 257 258 :class:`numbers.Complex` (:class:`complex`) 259 .. index:: 260 object: complex 261 pair: complex; number 262 263 These represent complex numbers as a pair of machine-level double precision 264 floating point numbers. The same caveats apply as for floating point numbers. 265 The real and imaginary parts of a complex number ``z`` can be retrieved through 266 the read-only attributes ``z.real`` and ``z.imag``. 267 268Sequences 269 .. index:: 270 builtin: len 271 object: sequence 272 single: index operation 273 single: item selection 274 single: subscription 275 276 These represent finite ordered sets indexed by non-negative numbers. The 277 built-in function :func:`len` returns the number of items of a sequence. When 278 the length of a sequence is *n*, the index set contains the numbers 0, 1, 279 ..., *n*-1. Item *i* of sequence *a* is selected by ``a[i]``. 280 281 .. index:: single: slicing 282 283 Sequences also support slicing: ``a[i:j]`` selects all items with index *k* such 284 that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is a 285 sequence of the same type. This implies that the index set is renumbered so 286 that it starts at 0. 287 288 Some sequences also support "extended slicing" with a third "step" parameter: 289 ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n* 290 ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*. 291 292 Sequences are distinguished according to their mutability: 293 294 Immutable sequences 295 .. index:: 296 object: immutable sequence 297 object: immutable 298 299 An object of an immutable sequence type cannot change once it is created. (If 300 the object contains references to other objects, these other objects may be 301 mutable and may be changed; however, the collection of objects directly 302 referenced by an immutable object cannot change.) 303 304 The following types are immutable sequences: 305 306 .. index:: 307 single: string; immutable sequences 308 309 Strings 310 .. index:: 311 builtin: chr 312 builtin: ord 313 single: character 314 single: integer 315 single: Unicode 316 317 A string is a sequence of values that represent Unicode code points. 318 All the code points in the range ``U+0000 - U+10FFFF`` can be 319 represented in a string. Python doesn't have a :c:type:`char` type; 320 instead, every code point in the string is represented as a string 321 object with length ``1``. The built-in function :func:`ord` 322 converts a code point from its string form to an integer in the 323 range ``0 - 10FFFF``; :func:`chr` converts an integer in the range 324 ``0 - 10FFFF`` to the corresponding length ``1`` string object. 325 :meth:`str.encode` can be used to convert a :class:`str` to 326 :class:`bytes` using the given text encoding, and 327 :meth:`bytes.decode` can be used to achieve the opposite. 328 329 Tuples 330 .. index:: 331 object: tuple 332 pair: singleton; tuple 333 pair: empty; tuple 334 335 The items of a tuple are arbitrary Python objects. Tuples of two or 336 more items are formed by comma-separated lists of expressions. A tuple 337 of one item (a 'singleton') can be formed by affixing a comma to an 338 expression (an expression by itself does not create a tuple, since 339 parentheses must be usable for grouping of expressions). An empty 340 tuple can be formed by an empty pair of parentheses. 341 342 Bytes 343 .. index:: bytes, byte 344 345 A bytes object is an immutable array. The items are 8-bit bytes, 346 represented by integers in the range 0 <= x < 256. Bytes literals 347 (like ``b'abc'``) and the built-in :func:`bytes()` constructor 348 can be used to create bytes objects. Also, bytes objects can be 349 decoded to strings via the :meth:`~bytes.decode` method. 350 351 Mutable sequences 352 .. index:: 353 object: mutable sequence 354 object: mutable 355 pair: assignment; statement 356 single: subscription 357 single: slicing 358 359 Mutable sequences can be changed after they are created. The subscription and 360 slicing notations can be used as the target of assignment and :keyword:`del` 361 (delete) statements. 362 363 There are currently two intrinsic mutable sequence types: 364 365 Lists 366 .. index:: object: list 367 368 The items of a list are arbitrary Python objects. Lists are formed by 369 placing a comma-separated list of expressions in square brackets. (Note 370 that there are no special cases needed to form lists of length 0 or 1.) 371 372 Byte Arrays 373 .. index:: bytearray 374 375 A bytearray object is a mutable array. They are created by the built-in 376 :func:`bytearray` constructor. Aside from being mutable 377 (and hence unhashable), byte arrays otherwise provide the same interface 378 and functionality as immutable :class:`bytes` objects. 379 380 .. index:: module: array 381 382 The extension module :mod:`array` provides an additional example of a 383 mutable sequence type, as does the :mod:`collections` module. 384 385Set types 386 .. index:: 387 builtin: len 388 object: set type 389 390 These represent unordered, finite sets of unique, immutable objects. As such, 391 they cannot be indexed by any subscript. However, they can be iterated over, and 392 the built-in function :func:`len` returns the number of items in a set. Common 393 uses for sets are fast membership testing, removing duplicates from a sequence, 394 and computing mathematical operations such as intersection, union, difference, 395 and symmetric difference. 396 397 For set elements, the same immutability rules apply as for dictionary keys. Note 398 that numeric types obey the normal rules for numeric comparison: if two numbers 399 compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a 400 set. 401 402 There are currently two intrinsic set types: 403 404 Sets 405 .. index:: object: set 406 407 These represent a mutable set. They are created by the built-in :func:`set` 408 constructor and can be modified afterwards by several methods, such as 409 :meth:`~set.add`. 410 411 Frozen sets 412 .. index:: object: frozenset 413 414 These represent an immutable set. They are created by the built-in 415 :func:`frozenset` constructor. As a frozenset is immutable and 416 :term:`hashable`, it can be used again as an element of another set, or as 417 a dictionary key. 418 419Mappings 420 .. index:: 421 builtin: len 422 single: subscription 423 object: mapping 424 425 These represent finite sets of objects indexed by arbitrary index sets. The 426 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping 427 ``a``; this can be used in expressions and as the target of assignments or 428 :keyword:`del` statements. The built-in function :func:`len` returns the number 429 of items in a mapping. 430 431 There is currently a single intrinsic mapping type: 432 433 Dictionaries 434 .. index:: object: dictionary 435 436 These represent finite sets of objects indexed by nearly arbitrary values. The 437 only types of values not acceptable as keys are values containing lists or 438 dictionaries or other mutable types that are compared by value rather than by 439 object identity, the reason being that the efficient implementation of 440 dictionaries requires a key's hash value to remain constant. Numeric types used 441 for keys obey the normal rules for numeric comparison: if two numbers compare 442 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index 443 the same dictionary entry. 444 445 Dictionaries preserve insertion order, meaning that keys will be produced 446 in the same order they were added sequentially over the dictionary. 447 Replacing an existing key does not change the order, however removing a key 448 and re-inserting it will add it to the end instead of keeping its old place. 449 450 Dictionaries are mutable; they can be created by the ``{...}`` notation (see 451 section :ref:`dict`). 452 453 .. index:: 454 module: dbm.ndbm 455 module: dbm.gnu 456 457 The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide 458 additional examples of mapping types, as does the :mod:`collections` 459 module. 460 461 .. versionchanged:: 3.7 462 Dictionaries did not preserve insertion order in versions of Python before 3.6. 463 In CPython 3.6, insertion order was preserved, but it was considered 464 an implementation detail at that time rather than a language guarantee. 465 466Callable types 467 .. index:: 468 object: callable 469 pair: function; call 470 single: invocation 471 pair: function; argument 472 473 These are the types to which the function call operation (see section 474 :ref:`calls`) can be applied: 475 476 User-defined functions 477 .. index:: 478 pair: user-defined; function 479 object: function 480 object: user-defined function 481 482 A user-defined function object is created by a function definition (see 483 section :ref:`function`). It should be called with an argument list 484 containing the same number of items as the function's formal parameter 485 list. 486 487 Special attributes: 488 489 .. tabularcolumns:: |l|L|l| 490 491 .. index:: 492 single: __doc__ (function attribute) 493 single: __name__ (function attribute) 494 single: __module__ (function attribute) 495 single: __dict__ (function attribute) 496 single: __defaults__ (function attribute) 497 single: __closure__ (function attribute) 498 single: __code__ (function attribute) 499 single: __globals__ (function attribute) 500 single: __annotations__ (function attribute) 501 single: __kwdefaults__ (function attribute) 502 pair: global; namespace 503 504 +-------------------------+-------------------------------+-----------+ 505 | Attribute | Meaning | | 506 +=========================+===============================+===========+ 507 | :attr:`__doc__` | The function's documentation | Writable | 508 | | string, or ``None`` if | | 509 | | unavailable; not inherited by | | 510 | | subclasses. | | 511 +-------------------------+-------------------------------+-----------+ 512 | :attr:`~definition.\ | The function's name. | Writable | 513 | __name__` | | | 514 +-------------------------+-------------------------------+-----------+ 515 | :attr:`~definition.\ | The function's | Writable | 516 | __qualname__` | :term:`qualified name`. | | 517 | | | | 518 | | .. versionadded:: 3.3 | | 519 +-------------------------+-------------------------------+-----------+ 520 | :attr:`__module__` | The name of the module the | Writable | 521 | | function was defined in, or | | 522 | | ``None`` if unavailable. | | 523 +-------------------------+-------------------------------+-----------+ 524 | :attr:`__defaults__` | A tuple containing default | Writable | 525 | | argument values for those | | 526 | | arguments that have defaults, | | 527 | | or ``None`` if no arguments | | 528 | | have a default value. | | 529 +-------------------------+-------------------------------+-----------+ 530 | :attr:`__code__` | The code object representing | Writable | 531 | | the compiled function body. | | 532 +-------------------------+-------------------------------+-----------+ 533 | :attr:`__globals__` | A reference to the dictionary | Read-only | 534 | | that holds the function's | | 535 | | global variables --- the | | 536 | | global namespace of the | | 537 | | module in which the function | | 538 | | was defined. | | 539 +-------------------------+-------------------------------+-----------+ 540 | :attr:`~object.__dict__`| The namespace supporting | Writable | 541 | | arbitrary function | | 542 | | attributes. | | 543 +-------------------------+-------------------------------+-----------+ 544 | :attr:`__closure__` | ``None`` or a tuple of cells | Read-only | 545 | | that contain bindings for the | | 546 | | function's free variables. | | 547 | | See below for information on | | 548 | | the ``cell_contents`` | | 549 | | attribute. | | 550 +-------------------------+-------------------------------+-----------+ 551 | :attr:`__annotations__` | A dict containing annotations | Writable | 552 | | of parameters. The keys of | | 553 | | the dict are the parameter | | 554 | | names, and ``'return'`` for | | 555 | | the return annotation, if | | 556 | | provided. For more | | 557 | | information on working with | | 558 | | this attribute, see | | 559 | | :ref:`annotations-howto`. | | 560 +-------------------------+-------------------------------+-----------+ 561 | :attr:`__kwdefaults__` | A dict containing defaults | Writable | 562 | | for keyword-only parameters. | | 563 +-------------------------+-------------------------------+-----------+ 564 565 Most of the attributes labelled "Writable" check the type of the assigned value. 566 567 Function objects also support getting and setting arbitrary attributes, which 568 can be used, for example, to attach metadata to functions. Regular attribute 569 dot-notation is used to get and set such attributes. *Note that the current 570 implementation only supports function attributes on user-defined functions. 571 Function attributes on built-in functions may be supported in the future.* 572 573 A cell object has the attribute ``cell_contents``. This can be used to get 574 the value of the cell, as well as set the value. 575 576 Additional information about a function's definition can be retrieved from its 577 code object; see the description of internal types below. The 578 :data:`cell <types.CellType>` type can be accessed in the :mod:`types` 579 module. 580 581 Instance methods 582 .. index:: 583 object: method 584 object: user-defined method 585 pair: user-defined; method 586 587 An instance method object combines a class, a class instance and any 588 callable object (normally a user-defined function). 589 590 .. index:: 591 single: __func__ (method attribute) 592 single: __self__ (method attribute) 593 single: __doc__ (method attribute) 594 single: __name__ (method attribute) 595 single: __module__ (method attribute) 596 597 Special read-only attributes: :attr:`__self__` is the class instance object, 598 :attr:`__func__` is the function object; :attr:`__doc__` is the method's 599 documentation (same as ``__func__.__doc__``); :attr:`~definition.__name__` is the 600 method name (same as ``__func__.__name__``); :attr:`__module__` is the 601 name of the module the method was defined in, or ``None`` if unavailable. 602 603 Methods also support accessing (but not setting) the arbitrary function 604 attributes on the underlying function object. 605 606 User-defined method objects may be created when getting an attribute of a 607 class (perhaps via an instance of that class), if that attribute is a 608 user-defined function object or a class method object. 609 610 When an instance method object is created by retrieving a user-defined 611 function object from a class via one of its instances, its 612 :attr:`__self__` attribute is the instance, and the method object is said 613 to be bound. The new method's :attr:`__func__` attribute is the original 614 function object. 615 616 When an instance method object is created by retrieving a class method 617 object from a class or instance, its :attr:`__self__` attribute is the 618 class itself, and its :attr:`__func__` attribute is the function object 619 underlying the class method. 620 621 When an instance method object is called, the underlying function 622 (:attr:`__func__`) is called, inserting the class instance 623 (:attr:`__self__`) in front of the argument list. For instance, when 624 :class:`C` is a class which contains a definition for a function 625 :meth:`f`, and ``x`` is an instance of :class:`C`, calling ``x.f(1)`` is 626 equivalent to calling ``C.f(x, 1)``. 627 628 When an instance method object is derived from a class method object, the 629 "class instance" stored in :attr:`__self__` will actually be the class 630 itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to 631 calling ``f(C,1)`` where ``f`` is the underlying function. 632 633 Note that the transformation from function object to instance method 634 object happens each time the attribute is retrieved from the instance. In 635 some cases, a fruitful optimization is to assign the attribute to a local 636 variable and call that local variable. Also notice that this 637 transformation only happens for user-defined functions; other callable 638 objects (and all non-callable objects) are retrieved without 639 transformation. It is also important to note that user-defined functions 640 which are attributes of a class instance are not converted to bound 641 methods; this *only* happens when the function is an attribute of the 642 class. 643 644 Generator functions 645 .. index:: 646 single: generator; function 647 single: generator; iterator 648 649 A function or method which uses the :keyword:`yield` statement (see section 650 :ref:`yield`) is called a :dfn:`generator function`. Such a function, when 651 called, always returns an :term:`iterator` object which can be used to 652 execute the body of the function: calling the iterator's 653 :meth:`iterator.__next__` method will cause the function to execute until 654 it provides a value using the :keyword:`!yield` statement. When the 655 function executes a :keyword:`return` statement or falls off the end, a 656 :exc:`StopIteration` exception is raised and the iterator will have 657 reached the end of the set of values to be returned. 658 659 Coroutine functions 660 .. index:: 661 single: coroutine; function 662 663 A function or method which is defined using :keyword:`async def` is called 664 a :dfn:`coroutine function`. Such a function, when called, returns a 665 :term:`coroutine` object. It may contain :keyword:`await` expressions, 666 as well as :keyword:`async with` and :keyword:`async for` statements. See 667 also the :ref:`coroutine-objects` section. 668 669 Asynchronous generator functions 670 .. index:: 671 single: asynchronous generator; function 672 single: asynchronous generator; asynchronous iterator 673 674 A function or method which is defined using :keyword:`async def` and 675 which uses the :keyword:`yield` statement is called a 676 :dfn:`asynchronous generator function`. Such a function, when called, 677 returns an :term:`asynchronous iterator` object which can be used in an 678 :keyword:`async for` statement to execute the body of the function. 679 680 Calling the asynchronous iterator's 681 :meth:`aiterator.__anext__ <object.__anext__>` method 682 will return an :term:`awaitable` which when awaited 683 will execute until it provides a value using the :keyword:`yield` 684 expression. When the function executes an empty :keyword:`return` 685 statement or falls off the end, a :exc:`StopAsyncIteration` exception 686 is raised and the asynchronous iterator will have reached the end of 687 the set of values to be yielded. 688 689 Built-in functions 690 .. index:: 691 object: built-in function 692 object: function 693 pair: C; language 694 695 A built-in function object is a wrapper around a C function. Examples of 696 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a 697 standard built-in module). The number and type of the arguments are 698 determined by the C function. Special read-only attributes: 699 :attr:`__doc__` is the function's documentation string, or ``None`` if 700 unavailable; :attr:`~definition.__name__` is the function's name; :attr:`__self__` is 701 set to ``None`` (but see the next item); :attr:`__module__` is the name of 702 the module the function was defined in or ``None`` if unavailable. 703 704 Built-in methods 705 .. index:: 706 object: built-in method 707 object: method 708 pair: built-in; method 709 710 This is really a different disguise of a built-in function, this time containing 711 an object passed to the C function as an implicit extra argument. An example of 712 a built-in method is ``alist.append()``, assuming *alist* is a list object. In 713 this case, the special read-only attribute :attr:`__self__` is set to the object 714 denoted by *alist*. 715 716 Classes 717 Classes are callable. These objects normally act as factories for new 718 instances of themselves, but variations are possible for class types that 719 override :meth:`~object.__new__`. The arguments of the call are passed to 720 :meth:`__new__` and, in the typical case, to :meth:`~object.__init__` to 721 initialize the new instance. 722 723 Class Instances 724 Instances of arbitrary classes can be made callable by defining a 725 :meth:`~object.__call__` method in their class. 726 727 728Modules 729 .. index:: 730 statement: import 731 object: module 732 733 Modules are a basic organizational unit of Python code, and are created by 734 the :ref:`import system <importsystem>` as invoked either by the 735 :keyword:`import` statement, or by calling 736 functions such as :func:`importlib.import_module` and built-in 737 :func:`__import__`. A module object has a namespace implemented by a 738 dictionary object (this is the dictionary referenced by the ``__globals__`` 739 attribute of functions defined in the module). Attribute references are 740 translated to lookups in this dictionary, e.g., ``m.x`` is equivalent to 741 ``m.__dict__["x"]``. A module object does not contain the code object used 742 to initialize the module (since it isn't needed once the initialization is 743 done). 744 745 Attribute assignment updates the module's namespace dictionary, e.g., 746 ``m.x = 1`` is equivalent to ``m.__dict__["x"] = 1``. 747 748 .. index:: 749 single: __name__ (module attribute) 750 single: __doc__ (module attribute) 751 single: __file__ (module attribute) 752 single: __annotations__ (module attribute) 753 pair: module; namespace 754 755 Predefined (writable) attributes: 756 757 :attr:`__name__` 758 The module's name. 759 760 :attr:`__doc__` 761 The module's documentation string, or ``None`` if 762 unavailable. 763 764 :attr:`__file__` 765 The pathname of the file from which the 766 module was loaded, if it was loaded from a file. 767 The :attr:`__file__` 768 attribute may be missing for certain types of modules, such as C modules 769 that are statically linked into the interpreter. For extension modules 770 loaded dynamically from a shared library, it's the pathname of the shared 771 library file. 772 773 :attr:`__annotations__` 774 A dictionary containing 775 :term:`variable annotations <variable annotation>` collected during 776 module body execution. For best practices on working 777 with :attr:`__annotations__`, please see :ref:`annotations-howto`. 778 779 .. index:: single: __dict__ (module attribute) 780 781 Special read-only attribute: :attr:`~object.__dict__` is the module's 782 namespace as a dictionary object. 783 784 .. impl-detail:: 785 786 Because of the way CPython clears module dictionaries, the module 787 dictionary will be cleared when the module falls out of scope even if the 788 dictionary still has live references. To avoid this, copy the dictionary 789 or keep the module around while using its dictionary directly. 790 791Custom classes 792 Custom class types are typically created by class definitions (see section 793 :ref:`class`). A class has a namespace implemented by a dictionary object. 794 Class attribute references are translated to lookups in this dictionary, e.g., 795 ``C.x`` is translated to ``C.__dict__["x"]`` (although there are a number of 796 hooks which allow for other means of locating attributes). When the attribute 797 name is not found there, the attribute search continues in the base classes. 798 This search of the base classes uses the C3 method resolution order which 799 behaves correctly even in the presence of 'diamond' inheritance structures 800 where there are multiple inheritance paths leading back to a common ancestor. 801 Additional details on the C3 MRO used by Python can be found in the 802 documentation accompanying the 2.3 release at 803 https://www.python.org/download/releases/2.3/mro/. 804 805 .. XXX: Could we add that MRO doc as an appendix to the language ref? 806 807 .. index:: 808 object: class 809 object: class instance 810 object: instance 811 pair: class object; call 812 single: container 813 object: dictionary 814 pair: class; attribute 815 816 When a class attribute reference (for class :class:`C`, say) would yield a 817 class method object, it is transformed into an instance method object whose 818 :attr:`__self__` attribute is :class:`C`. When it would yield a static 819 method object, it is transformed into the object wrapped by the static method 820 object. See section :ref:`descriptors` for another way in which attributes 821 retrieved from a class may differ from those actually contained in its 822 :attr:`~object.__dict__`. 823 824 .. index:: triple: class; attribute; assignment 825 826 Class attribute assignments update the class's dictionary, never the dictionary 827 of a base class. 828 829 .. index:: pair: class object; call 830 831 A class object can be called (see above) to yield a class instance (see below). 832 833 .. index:: 834 single: __name__ (class attribute) 835 single: __module__ (class attribute) 836 single: __dict__ (class attribute) 837 single: __bases__ (class attribute) 838 single: __doc__ (class attribute) 839 single: __annotations__ (class attribute) 840 841 Special attributes: 842 843 :attr:`~definition.__name__` 844 The class name. 845 846 :attr:`__module__` 847 The name of the module in which the class was defined. 848 849 :attr:`~object.__dict__` 850 The dictionary containing the class's namespace. 851 852 :attr:`~class.__bases__` 853 A tuple containing the base classes, in the order of 854 their occurrence in the base class list. 855 856 :attr:`__doc__` 857 The class's documentation string, or ``None`` if undefined. 858 859 :attr:`__annotations__` 860 A dictionary containing 861 :term:`variable annotations <variable annotation>` 862 collected during class body execution. For best practices on 863 working with :attr:`__annotations__`, please see 864 :ref:`annotations-howto`. 865 866Class instances 867 .. index:: 868 object: class instance 869 object: instance 870 pair: class; instance 871 pair: class instance; attribute 872 873 A class instance is created by calling a class object (see above). A class 874 instance has a namespace implemented as a dictionary which is the first place 875 in which attribute references are searched. When an attribute is not found 876 there, and the instance's class has an attribute by that name, the search 877 continues with the class attributes. If a class attribute is found that is a 878 user-defined function object, it is transformed into an instance method 879 object whose :attr:`__self__` attribute is the instance. Static method and 880 class method objects are also transformed; see above under "Classes". See 881 section :ref:`descriptors` for another way in which attributes of a class 882 retrieved via its instances may differ from the objects actually stored in 883 the class's :attr:`~object.__dict__`. If no class attribute is found, and the 884 object's class has a :meth:`~object.__getattr__` method, that is called to satisfy 885 the lookup. 886 887 .. index:: triple: class instance; attribute; assignment 888 889 Attribute assignments and deletions update the instance's dictionary, never a 890 class's dictionary. If the class has a :meth:`~object.__setattr__` or 891 :meth:`~object.__delattr__` method, this is called instead of updating the instance 892 dictionary directly. 893 894 .. index:: 895 object: numeric 896 object: sequence 897 object: mapping 898 899 Class instances can pretend to be numbers, sequences, or mappings if they have 900 methods with certain special names. See section :ref:`specialnames`. 901 902 .. index:: 903 single: __dict__ (instance attribute) 904 single: __class__ (instance attribute) 905 906 Special attributes: :attr:`~object.__dict__` is the attribute dictionary; 907 :attr:`~instance.__class__` is the instance's class. 908 909I/O objects (also known as file objects) 910 .. index:: 911 builtin: open 912 module: io 913 single: popen() (in module os) 914 single: makefile() (socket method) 915 single: sys.stdin 916 single: sys.stdout 917 single: sys.stderr 918 single: stdio 919 single: stdin (in module sys) 920 single: stdout (in module sys) 921 single: stderr (in module sys) 922 923 A :term:`file object` represents an open file. Various shortcuts are 924 available to create file objects: the :func:`open` built-in function, and 925 also :func:`os.popen`, :func:`os.fdopen`, and the 926 :meth:`~socket.socket.makefile` method of socket objects (and perhaps by 927 other functions or methods provided by extension modules). 928 929 The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are 930 initialized to file objects corresponding to the interpreter's standard 931 input, output and error streams; they are all open in text mode and 932 therefore follow the interface defined by the :class:`io.TextIOBase` 933 abstract class. 934 935Internal types 936 .. index:: 937 single: internal type 938 single: types, internal 939 940 A few types used internally by the interpreter are exposed to the user. Their 941 definitions may change with future versions of the interpreter, but they are 942 mentioned here for completeness. 943 944 .. index:: bytecode, object; code, code object 945 946 Code objects 947 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`. 948 The difference between a code object and a function object is that the function 949 object contains an explicit reference to the function's globals (the module in 950 which it was defined), while a code object contains no context; also the default 951 argument values are stored in the function object, not in the code object 952 (because they represent values calculated at run-time). Unlike function 953 objects, code objects are immutable and contain no references (directly or 954 indirectly) to mutable objects. 955 956 .. index:: 957 single: co_argcount (code object attribute) 958 single: co_posonlyargcount (code object attribute) 959 single: co_kwonlyargcount (code object attribute) 960 single: co_code (code object attribute) 961 single: co_consts (code object attribute) 962 single: co_filename (code object attribute) 963 single: co_firstlineno (code object attribute) 964 single: co_flags (code object attribute) 965 single: co_lnotab (code object attribute) 966 single: co_name (code object attribute) 967 single: co_names (code object attribute) 968 single: co_nlocals (code object attribute) 969 single: co_stacksize (code object attribute) 970 single: co_varnames (code object attribute) 971 single: co_cellvars (code object attribute) 972 single: co_freevars (code object attribute) 973 974 Special read-only attributes: :attr:`co_name` gives the function name; 975 :attr:`co_argcount` is the total number of positional arguments 976 (including positional-only arguments and arguments with default values); 977 :attr:`co_posonlyargcount` is the number of positional-only arguments 978 (including arguments with default values); :attr:`co_kwonlyargcount` is 979 the number of keyword-only arguments (including arguments with default 980 values); :attr:`co_nlocals` is the number of local variables used by the 981 function (including arguments); :attr:`co_varnames` is a tuple containing 982 the names of the local variables (starting with the argument names); 983 :attr:`co_cellvars` is a tuple containing the names of local variables 984 that are referenced by nested functions; :attr:`co_freevars` is a tuple 985 containing the names of free variables; :attr:`co_code` is a string 986 representing the sequence of bytecode instructions; :attr:`co_consts` is 987 a tuple containing the literals used by the bytecode; :attr:`co_names` is 988 a tuple containing the names used by the bytecode; :attr:`co_filename` is 989 the filename from which the code was compiled; :attr:`co_firstlineno` is 990 the first line number of the function; :attr:`co_lnotab` is a string 991 encoding the mapping from bytecode offsets to line numbers (for details 992 see the source code of the interpreter); :attr:`co_stacksize` is the 993 required stack size; :attr:`co_flags` is an integer encoding a number 994 of flags for the interpreter. 995 996 .. index:: object: generator 997 998 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if 999 the function uses the ``*arguments`` syntax to accept an arbitrary number of 1000 positional arguments; bit ``0x08`` is set if the function uses the 1001 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set 1002 if the function is a generator. 1003 1004 Future feature declarations (``from __future__ import division``) also use bits 1005 in :attr:`co_flags` to indicate whether a code object was compiled with a 1006 particular feature enabled: bit ``0x2000`` is set if the function was compiled 1007 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier 1008 versions of Python. 1009 1010 Other bits in :attr:`co_flags` are reserved for internal use. 1011 1012 .. index:: single: documentation string 1013 1014 If a code object represents a function, the first item in :attr:`co_consts` is 1015 the documentation string of the function, or ``None`` if undefined. 1016 1017 .. _frame-objects: 1018 1019 Frame objects 1020 .. index:: object: frame 1021 1022 Frame objects represent execution frames. They may occur in traceback objects 1023 (see below), and are also passed to registered trace functions. 1024 1025 .. index:: 1026 single: f_back (frame attribute) 1027 single: f_code (frame attribute) 1028 single: f_globals (frame attribute) 1029 single: f_locals (frame attribute) 1030 single: f_lasti (frame attribute) 1031 single: f_builtins (frame attribute) 1032 1033 Special read-only attributes: :attr:`f_back` is to the previous stack frame 1034 (towards the caller), or ``None`` if this is the bottom stack frame; 1035 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals` 1036 is the dictionary used to look up local variables; :attr:`f_globals` is used for 1037 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names; 1038 :attr:`f_lasti` gives the precise instruction (this is an index into the 1039 bytecode string of the code object). 1040 1041 Accessing ``f_code`` raises an :ref:`auditing event <auditing>` 1042 ``object.__getattr__`` with arguments ``obj`` and ``"f_code"``. 1043 1044 .. index:: 1045 single: f_trace (frame attribute) 1046 single: f_trace_lines (frame attribute) 1047 single: f_trace_opcodes (frame attribute) 1048 single: f_lineno (frame attribute) 1049 1050 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function 1051 called for various events during code execution (this is used by the debugger). 1052 Normally an event is triggered for each new source line - this can be 1053 disabled by setting :attr:`f_trace_lines` to :const:`False`. 1054 1055 Implementations *may* allow per-opcode events to be requested by setting 1056 :attr:`f_trace_opcodes` to :const:`True`. Note that this may lead to 1057 undefined interpreter behaviour if exceptions raised by the trace 1058 function escape to the function being traced. 1059 1060 :attr:`f_lineno` is the current line number of the frame --- writing to this 1061 from within a trace function jumps to the given line (only for the bottom-most 1062 frame). A debugger can implement a Jump command (aka Set Next Statement) 1063 by writing to f_lineno. 1064 1065 Frame objects support one method: 1066 1067 .. method:: frame.clear() 1068 1069 This method clears all references to local variables held by the 1070 frame. Also, if the frame belonged to a generator, the generator 1071 is finalized. This helps break reference cycles involving frame 1072 objects (for example when catching an exception and storing its 1073 traceback for later use). 1074 1075 :exc:`RuntimeError` is raised if the frame is currently executing. 1076 1077 .. versionadded:: 3.4 1078 1079 .. _traceback-objects: 1080 1081 Traceback objects 1082 .. index:: 1083 object: traceback 1084 pair: stack; trace 1085 pair: exception; handler 1086 pair: execution; stack 1087 single: exc_info (in module sys) 1088 single: last_traceback (in module sys) 1089 single: sys.exc_info 1090 single: sys.last_traceback 1091 1092 Traceback objects represent a stack trace of an exception. A traceback object 1093 is implicitly created when an exception occurs, and may also be explicitly 1094 created by calling :class:`types.TracebackType`. 1095 1096 For implicitly created tracebacks, when the search for an exception handler 1097 unwinds the execution stack, at each unwound level a traceback object is 1098 inserted in front of the current traceback. When an exception handler is 1099 entered, the stack trace is made available to the program. (See section 1100 :ref:`try`.) It is accessible as the third item of the 1101 tuple returned by ``sys.exc_info()``, and as the ``__traceback__`` attribute 1102 of the caught exception. 1103 1104 When the program contains no suitable 1105 handler, the stack trace is written (nicely formatted) to the standard error 1106 stream; if the interpreter is interactive, it is also made available to the user 1107 as ``sys.last_traceback``. 1108 1109 For explicitly created tracebacks, it is up to the creator of the traceback 1110 to determine how the ``tb_next`` attributes should be linked to form a 1111 full stack trace. 1112 1113 .. index:: 1114 single: tb_frame (traceback attribute) 1115 single: tb_lineno (traceback attribute) 1116 single: tb_lasti (traceback attribute) 1117 statement: try 1118 1119 Special read-only attributes: 1120 :attr:`tb_frame` points to the execution frame of the current level; 1121 :attr:`tb_lineno` gives the line number where the exception occurred; 1122 :attr:`tb_lasti` indicates the precise instruction. 1123 The line number and last instruction in the traceback may differ from the 1124 line number of its frame object if the exception occurred in a 1125 :keyword:`try` statement with no matching except clause or with a 1126 finally clause. 1127 1128 Accessing ``tb_frame`` raises an :ref:`auditing event <auditing>` 1129 ``object.__getattr__`` with arguments ``obj`` and ``"tb_frame"``. 1130 1131 .. index:: 1132 single: tb_next (traceback attribute) 1133 1134 Special writable attribute: :attr:`tb_next` is the next level in the stack 1135 trace (towards the frame where the exception occurred), or ``None`` if 1136 there is no next level. 1137 1138 .. versionchanged:: 3.7 1139 Traceback objects can now be explicitly instantiated from Python code, 1140 and the ``tb_next`` attribute of existing instances can be updated. 1141 1142 Slice objects 1143 .. index:: builtin: slice 1144 1145 Slice objects are used to represent slices for 1146 :meth:`~object.__getitem__` 1147 methods. They are also created by the built-in :func:`slice` function. 1148 1149 .. index:: 1150 single: start (slice object attribute) 1151 single: stop (slice object attribute) 1152 single: step (slice object attribute) 1153 1154 Special read-only attributes: :attr:`~slice.start` is the lower bound; 1155 :attr:`~slice.stop` is the upper bound; :attr:`~slice.step` is the step 1156 value; each is ``None`` if omitted. These attributes can have any type. 1157 1158 Slice objects support one method: 1159 1160 .. method:: slice.indices(self, length) 1161 1162 This method takes a single integer argument *length* and computes 1163 information about the slice that the slice object would describe if 1164 applied to a sequence of *length* items. It returns a tuple of three 1165 integers; respectively these are the *start* and *stop* indices and the 1166 *step* or stride length of the slice. Missing or out-of-bounds indices 1167 are handled in a manner consistent with regular slices. 1168 1169 Static method objects 1170 Static method objects provide a way of defeating the transformation of function 1171 objects to method objects described above. A static method object is a wrapper 1172 around any other object, usually a user-defined method object. When a static 1173 method object is retrieved from a class or a class instance, the object actually 1174 returned is the wrapped object, which is not subject to any further 1175 transformation. Static method objects are also callable. Static method 1176 objects are created by the built-in :func:`staticmethod` constructor. 1177 1178 Class method objects 1179 A class method object, like a static method object, is a wrapper around another 1180 object that alters the way in which that object is retrieved from classes and 1181 class instances. The behaviour of class method objects upon such retrieval is 1182 described above, under "User-defined methods". Class method objects are created 1183 by the built-in :func:`classmethod` constructor. 1184 1185 1186.. _specialnames: 1187 1188Special method names 1189==================== 1190 1191.. index:: 1192 pair: operator; overloading 1193 single: __getitem__() (mapping object method) 1194 1195A class can implement certain operations that are invoked by special syntax 1196(such as arithmetic operations or subscripting and slicing) by defining methods 1197with special names. This is Python's approach to :dfn:`operator overloading`, 1198allowing classes to define their own behavior with respect to language 1199operators. For instance, if a class defines a method named 1200:meth:`~object.__getitem__`, 1201and ``x`` is an instance of this class, then ``x[i]`` is roughly equivalent 1202to ``type(x).__getitem__(x, i)``. Except where mentioned, attempts to execute an 1203operation raise an exception when no appropriate method is defined (typically 1204:exc:`AttributeError` or :exc:`TypeError`). 1205 1206Setting a special method to ``None`` indicates that the corresponding 1207operation is not available. For example, if a class sets 1208:meth:`~object.__iter__` to ``None``, the class is not iterable, so calling 1209:func:`iter` on its instances will raise a :exc:`TypeError` (without 1210falling back to :meth:`~object.__getitem__`). [#]_ 1211 1212When implementing a class that emulates any built-in type, it is important that 1213the emulation only be implemented to the degree that it makes sense for the 1214object being modelled. For example, some sequences may work well with retrieval 1215of individual elements, but extracting a slice may not make sense. (One example 1216of this is the :class:`~xml.dom.NodeList` interface in the W3C's Document 1217Object Model.) 1218 1219 1220.. _customization: 1221 1222Basic customization 1223------------------- 1224 1225.. method:: object.__new__(cls[, ...]) 1226 1227 .. index:: pair: subclassing; immutable types 1228 1229 Called to create a new instance of class *cls*. :meth:`__new__` is a static 1230 method (special-cased so you need not declare it as such) that takes the class 1231 of which an instance was requested as its first argument. The remaining 1232 arguments are those passed to the object constructor expression (the call to the 1233 class). The return value of :meth:`__new__` should be the new object instance 1234 (usually an instance of *cls*). 1235 1236 Typical implementations create a new instance of the class by invoking the 1237 superclass's :meth:`__new__` method using ``super().__new__(cls[, ...])`` 1238 with appropriate arguments and then modifying the newly-created instance 1239 as necessary before returning it. 1240 1241 If :meth:`__new__` is invoked during object construction and it returns an 1242 instance of *cls*, then the new instance’s :meth:`__init__` method 1243 will be invoked like ``__init__(self[, ...])``, where *self* is the new instance 1244 and the remaining arguments are the same as were passed to the object constructor. 1245 1246 If :meth:`__new__` does not return an instance of *cls*, then the new instance's 1247 :meth:`__init__` method will not be invoked. 1248 1249 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like 1250 int, str, or tuple) to customize instance creation. It is also commonly 1251 overridden in custom metaclasses in order to customize class creation. 1252 1253 1254.. method:: object.__init__(self[, ...]) 1255 1256 .. index:: pair: class; constructor 1257 1258 Called after the instance has been created (by :meth:`__new__`), but before 1259 it is returned to the caller. The arguments are those passed to the 1260 class constructor expression. If a base class has an :meth:`__init__` 1261 method, the derived class's :meth:`__init__` method, if any, must explicitly 1262 call it to ensure proper initialization of the base class part of the 1263 instance; for example: ``super().__init__([args...])``. 1264 1265 Because :meth:`__new__` and :meth:`__init__` work together in constructing 1266 objects (:meth:`__new__` to create it, and :meth:`__init__` to customize it), 1267 no non-``None`` value may be returned by :meth:`__init__`; doing so will 1268 cause a :exc:`TypeError` to be raised at runtime. 1269 1270 1271.. method:: object.__del__(self) 1272 1273 .. index:: 1274 single: destructor 1275 single: finalizer 1276 statement: del 1277 1278 Called when the instance is about to be destroyed. This is also called a 1279 finalizer or (improperly) a destructor. If a base class has a 1280 :meth:`__del__` method, the derived class's :meth:`__del__` method, 1281 if any, must explicitly call it to ensure proper deletion of the base 1282 class part of the instance. 1283 1284 It is possible (though not recommended!) for the :meth:`__del__` method 1285 to postpone destruction of the instance by creating a new reference to 1286 it. This is called object *resurrection*. It is implementation-dependent 1287 whether :meth:`__del__` is called a second time when a resurrected object 1288 is about to be destroyed; the current :term:`CPython` implementation 1289 only calls it once. 1290 1291 It is not guaranteed that :meth:`__del__` methods are called for objects 1292 that still exist when the interpreter exits. 1293 1294 .. note:: 1295 1296 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements 1297 the reference count for ``x`` by one, and the latter is only called when 1298 ``x``'s reference count reaches zero. 1299 1300 .. impl-detail:: 1301 It is possible for a reference cycle to prevent the reference count 1302 of an object from going to zero. In this case, the cycle will be 1303 later detected and deleted by the :term:`cyclic garbage collector 1304 <garbage collection>`. A common cause of reference cycles is when 1305 an exception has been caught in a local variable. The frame's 1306 locals then reference the exception, which references its own 1307 traceback, which references the locals of all frames caught in the 1308 traceback. 1309 1310 .. seealso:: 1311 Documentation for the :mod:`gc` module. 1312 1313 .. warning:: 1314 1315 Due to the precarious circumstances under which :meth:`__del__` methods are 1316 invoked, exceptions that occur during their execution are ignored, and a warning 1317 is printed to ``sys.stderr`` instead. In particular: 1318 1319 * :meth:`__del__` can be invoked when arbitrary code is being executed, 1320 including from any arbitrary thread. If :meth:`__del__` needs to take 1321 a lock or invoke any other blocking resource, it may deadlock as 1322 the resource may already be taken by the code that gets interrupted 1323 to execute :meth:`__del__`. 1324 1325 * :meth:`__del__` can be executed during interpreter shutdown. As a 1326 consequence, the global variables it needs to access (including other 1327 modules) may already have been deleted or set to ``None``. Python 1328 guarantees that globals whose name begins with a single underscore 1329 are deleted from their module before other globals are deleted; if 1330 no other references to such globals exist, this may help in assuring 1331 that imported modules are still available at the time when the 1332 :meth:`__del__` method is called. 1333 1334 1335 .. index:: 1336 single: repr() (built-in function); __repr__() (object method) 1337 1338.. method:: object.__repr__(self) 1339 1340 Called by the :func:`repr` built-in function to compute the "official" string 1341 representation of an object. If at all possible, this should look like a 1342 valid Python expression that could be used to recreate an object with the 1343 same value (given an appropriate environment). If this is not possible, a 1344 string of the form ``<...some useful description...>`` should be returned. 1345 The return value must be a string object. If a class defines :meth:`__repr__` 1346 but not :meth:`__str__`, then :meth:`__repr__` is also used when an 1347 "informal" string representation of instances of that class is required. 1348 1349 This is typically used for debugging, so it is important that the representation 1350 is information-rich and unambiguous. 1351 1352 .. index:: 1353 single: string; __str__() (object method) 1354 single: format() (built-in function); __str__() (object method) 1355 single: print() (built-in function); __str__() (object method) 1356 1357 1358.. method:: object.__str__(self) 1359 1360 Called by :func:`str(object) <str>` and the built-in functions 1361 :func:`format` and :func:`print` to compute the "informal" or nicely 1362 printable string representation of an object. The return value must be a 1363 :ref:`string <textseq>` object. 1364 1365 This method differs from :meth:`object.__repr__` in that there is no 1366 expectation that :meth:`__str__` return a valid Python expression: a more 1367 convenient or concise representation can be used. 1368 1369 The default implementation defined by the built-in type :class:`object` 1370 calls :meth:`object.__repr__`. 1371 1372 .. XXX what about subclasses of string? 1373 1374 1375.. method:: object.__bytes__(self) 1376 1377 .. index:: builtin: bytes 1378 1379 Called by :ref:`bytes <func-bytes>` to compute a byte-string representation 1380 of an object. This should return a :class:`bytes` object. 1381 1382 .. index:: 1383 single: string; __format__() (object method) 1384 pair: string; conversion 1385 builtin: print 1386 1387 1388.. method:: object.__format__(self, format_spec) 1389 1390 Called by the :func:`format` built-in function, 1391 and by extension, evaluation of :ref:`formatted string literals 1392 <f-strings>` and the :meth:`str.format` method, to produce a "formatted" 1393 string representation of an object. The *format_spec* argument is 1394 a string that contains a description of the formatting options desired. 1395 The interpretation of the *format_spec* argument is up to the type 1396 implementing :meth:`__format__`, however most classes will either 1397 delegate formatting to one of the built-in types, or use a similar 1398 formatting option syntax. 1399 1400 See :ref:`formatspec` for a description of the standard formatting syntax. 1401 1402 The return value must be a string object. 1403 1404 .. versionchanged:: 3.4 1405 The __format__ method of ``object`` itself raises a :exc:`TypeError` 1406 if passed any non-empty string. 1407 1408 .. versionchanged:: 3.7 1409 ``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather 1410 than ``format(str(x), '')``. 1411 1412 1413.. _richcmpfuncs: 1414.. method:: object.__lt__(self, other) 1415 object.__le__(self, other) 1416 object.__eq__(self, other) 1417 object.__ne__(self, other) 1418 object.__gt__(self, other) 1419 object.__ge__(self, other) 1420 1421 .. index:: 1422 single: comparisons 1423 1424 These are the so-called "rich comparison" methods. The correspondence between 1425 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``, 1426 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls 1427 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls 1428 ``x.__ge__(y)``. 1429 1430 A rich comparison method may return the singleton ``NotImplemented`` if it does 1431 not implement the operation for a given pair of arguments. By convention, 1432 ``False`` and ``True`` are returned for a successful comparison. However, these 1433 methods can return any value, so if the comparison operator is used in a Boolean 1434 context (e.g., in the condition of an ``if`` statement), Python will call 1435 :func:`bool` on the value to determine if the result is true or false. 1436 1437 By default, ``object`` implements :meth:`__eq__` by using ``is``, returning 1438 ``NotImplemented`` in the case of a false comparison: 1439 ``True if x is y else NotImplemented``. For :meth:`__ne__`, by default it 1440 delegates to :meth:`__eq__` and inverts the result unless it is 1441 ``NotImplemented``. There are no other implied relationships among the 1442 comparison operators or default implementations; for example, the truth of 1443 ``(x<y or x==y)`` does not imply ``x<=y``. To automatically generate ordering 1444 operations from a single root operation, see :func:`functools.total_ordering`. 1445 1446 See the paragraph on :meth:`__hash__` for 1447 some important notes on creating :term:`hashable` objects which support 1448 custom comparison operations and are usable as dictionary keys. 1449 1450 There are no swapped-argument versions of these methods (to be used when the 1451 left argument does not support the operation but the right argument does); 1452 rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection, 1453 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and 1454 :meth:`__eq__` and :meth:`__ne__` are their own reflection. 1455 If the operands are of different types, and right operand's type is 1456 a direct or indirect subclass of the left operand's type, 1457 the reflected method of the right operand has priority, otherwise 1458 the left operand's method has priority. Virtual subclassing is 1459 not considered. 1460 1461.. method:: object.__hash__(self) 1462 1463 .. index:: 1464 object: dictionary 1465 builtin: hash 1466 1467 Called by built-in function :func:`hash` and for operations on members of 1468 hashed collections including :class:`set`, :class:`frozenset`, and 1469 :class:`dict`. :meth:`__hash__` should return an integer. The only required 1470 property is that objects which compare equal have the same hash value; it is 1471 advised to mix together the hash values of the components of the object that 1472 also play a part in comparison of objects by packing them into a tuple and 1473 hashing the tuple. Example:: 1474 1475 def __hash__(self): 1476 return hash((self.name, self.nick, self.color)) 1477 1478 .. note:: 1479 1480 :func:`hash` truncates the value returned from an object's custom 1481 :meth:`__hash__` method to the size of a :c:type:`Py_ssize_t`. This is 1482 typically 8 bytes on 64-bit builds and 4 bytes on 32-bit builds. If an 1483 object's :meth:`__hash__` must interoperate on builds of different bit 1484 sizes, be sure to check the width on all supported builds. An easy way 1485 to do this is with 1486 ``python -c "import sys; print(sys.hash_info.width)"``. 1487 1488 If a class does not define an :meth:`__eq__` method it should not define a 1489 :meth:`__hash__` operation either; if it defines :meth:`__eq__` but not 1490 :meth:`__hash__`, its instances will not be usable as items in hashable 1491 collections. If a class defines mutable objects and implements an 1492 :meth:`__eq__` method, it should not implement :meth:`__hash__`, since the 1493 implementation of hashable collections requires that a key's hash value is 1494 immutable (if the object's hash value changes, it will be in the wrong hash 1495 bucket). 1496 1497 User-defined classes have :meth:`__eq__` and :meth:`__hash__` methods 1498 by default; with them, all objects compare unequal (except with themselves) 1499 and ``x.__hash__()`` returns an appropriate value such that ``x == y`` 1500 implies both that ``x is y`` and ``hash(x) == hash(y)``. 1501 1502 A class that overrides :meth:`__eq__` and does not define :meth:`__hash__` 1503 will have its :meth:`__hash__` implicitly set to ``None``. When the 1504 :meth:`__hash__` method of a class is ``None``, instances of the class will 1505 raise an appropriate :exc:`TypeError` when a program attempts to retrieve 1506 their hash value, and will also be correctly identified as unhashable when 1507 checking ``isinstance(obj, collections.abc.Hashable)``. 1508 1509 If a class that overrides :meth:`__eq__` needs to retain the implementation 1510 of :meth:`__hash__` from a parent class, the interpreter must be told this 1511 explicitly by setting ``__hash__ = <ParentClass>.__hash__``. 1512 1513 If a class that does not override :meth:`__eq__` wishes to suppress hash 1514 support, it should include ``__hash__ = None`` in the class definition. 1515 A class which defines its own :meth:`__hash__` that explicitly raises 1516 a :exc:`TypeError` would be incorrectly identified as hashable by 1517 an ``isinstance(obj, collections.abc.Hashable)`` call. 1518 1519 1520 .. note:: 1521 1522 By default, the :meth:`__hash__` values of str and bytes objects are 1523 "salted" with an unpredictable random value. Although they 1524 remain constant within an individual Python process, they are not 1525 predictable between repeated invocations of Python. 1526 1527 This is intended to provide protection against a denial-of-service caused 1528 by carefully-chosen inputs that exploit the worst case performance of a 1529 dict insertion, O(n\ :sup:`2`) complexity. See 1530 http://www.ocert.org/advisories/ocert-2011-003.html for details. 1531 1532 Changing hash values affects the iteration order of sets. 1533 Python has never made guarantees about this ordering 1534 (and it typically varies between 32-bit and 64-bit builds). 1535 1536 See also :envvar:`PYTHONHASHSEED`. 1537 1538 .. versionchanged:: 3.3 1539 Hash randomization is enabled by default. 1540 1541 1542.. method:: object.__bool__(self) 1543 1544 .. index:: single: __len__() (mapping object method) 1545 1546 Called to implement truth value testing and the built-in operation 1547 ``bool()``; should return ``False`` or ``True``. When this method is not 1548 defined, :meth:`__len__` is called, if it is defined, and the object is 1549 considered true if its result is nonzero. If a class defines neither 1550 :meth:`__len__` nor :meth:`__bool__`, all its instances are considered 1551 true. 1552 1553 1554.. _attribute-access: 1555 1556Customizing attribute access 1557---------------------------- 1558 1559The following methods can be defined to customize the meaning of attribute 1560access (use of, assignment to, or deletion of ``x.name``) for class instances. 1561 1562.. XXX explain how descriptors interfere here! 1563 1564 1565.. method:: object.__getattr__(self, name) 1566 1567 Called when the default attribute access fails with an :exc:`AttributeError` 1568 (either :meth:`__getattribute__` raises an :exc:`AttributeError` because 1569 *name* is not an instance attribute or an attribute in the class tree 1570 for ``self``; or :meth:`__get__` of a *name* property raises 1571 :exc:`AttributeError`). This method should either return the (computed) 1572 attribute value or raise an :exc:`AttributeError` exception. 1573 1574 Note that if the attribute is found through the normal mechanism, 1575 :meth:`__getattr__` is not called. (This is an intentional asymmetry between 1576 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency 1577 reasons and because otherwise :meth:`__getattr__` would have no way to access 1578 other attributes of the instance. Note that at least for instance variables, 1579 you can fake total control by not inserting any values in the instance attribute 1580 dictionary (but instead inserting them in another object). See the 1581 :meth:`__getattribute__` method below for a way to actually get total control 1582 over attribute access. 1583 1584 1585.. method:: object.__getattribute__(self, name) 1586 1587 Called unconditionally to implement attribute accesses for instances of the 1588 class. If the class also defines :meth:`__getattr__`, the latter will not be 1589 called unless :meth:`__getattribute__` either calls it explicitly or raises an 1590 :exc:`AttributeError`. This method should return the (computed) attribute value 1591 or raise an :exc:`AttributeError` exception. In order to avoid infinite 1592 recursion in this method, its implementation should always call the base class 1593 method with the same name to access any attributes it needs, for example, 1594 ``object.__getattribute__(self, name)``. 1595 1596 .. note:: 1597 1598 This method may still be bypassed when looking up special methods as the 1599 result of implicit invocation via language syntax or built-in functions. 1600 See :ref:`special-lookup`. 1601 1602 .. audit-event:: object.__getattr__ obj,name object.__getattribute__ 1603 1604 For certain sensitive attribute accesses, raises an 1605 :ref:`auditing event <auditing>` ``object.__getattr__`` with arguments 1606 ``obj`` and ``name``. 1607 1608 1609.. method:: object.__setattr__(self, name, value) 1610 1611 Called when an attribute assignment is attempted. This is called instead of 1612 the normal mechanism (i.e. store the value in the instance dictionary). 1613 *name* is the attribute name, *value* is the value to be assigned to it. 1614 1615 If :meth:`__setattr__` wants to assign to an instance attribute, it should 1616 call the base class method with the same name, for example, 1617 ``object.__setattr__(self, name, value)``. 1618 1619 .. audit-event:: object.__setattr__ obj,name,value object.__setattr__ 1620 1621 For certain sensitive attribute assignments, raises an 1622 :ref:`auditing event <auditing>` ``object.__setattr__`` with arguments 1623 ``obj``, ``name``, ``value``. 1624 1625 1626.. method:: object.__delattr__(self, name) 1627 1628 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This 1629 should only be implemented if ``del obj.name`` is meaningful for the object. 1630 1631 .. audit-event:: object.__delattr__ obj,name object.__delattr__ 1632 1633 For certain sensitive attribute deletions, raises an 1634 :ref:`auditing event <auditing>` ``object.__delattr__`` with arguments 1635 ``obj`` and ``name``. 1636 1637 1638.. method:: object.__dir__(self) 1639 1640 Called when :func:`dir` is called on the object. A sequence must be 1641 returned. :func:`dir` converts the returned sequence to a list and sorts it. 1642 1643 1644Customizing module attribute access 1645^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1646 1647.. index:: 1648 single: __getattr__ (module attribute) 1649 single: __dir__ (module attribute) 1650 single: __class__ (module attribute) 1651 1652Special names ``__getattr__`` and ``__dir__`` can be also used to customize 1653access to module attributes. The ``__getattr__`` function at the module level 1654should accept one argument which is the name of an attribute and return the 1655computed value or raise an :exc:`AttributeError`. If an attribute is 1656not found on a module object through the normal lookup, i.e. 1657:meth:`object.__getattribute__`, then ``__getattr__`` is searched in 1658the module ``__dict__`` before raising an :exc:`AttributeError`. If found, 1659it is called with the attribute name and the result is returned. 1660 1661The ``__dir__`` function should accept no arguments, and return a sequence of 1662strings that represents the names accessible on module. If present, this 1663function overrides the standard :func:`dir` search on a module. 1664 1665For a more fine grained customization of the module behavior (setting 1666attributes, properties, etc.), one can set the ``__class__`` attribute of 1667a module object to a subclass of :class:`types.ModuleType`. For example:: 1668 1669 import sys 1670 from types import ModuleType 1671 1672 class VerboseModule(ModuleType): 1673 def __repr__(self): 1674 return f'Verbose {self.__name__}' 1675 1676 def __setattr__(self, attr, value): 1677 print(f'Setting {attr}...') 1678 super().__setattr__(attr, value) 1679 1680 sys.modules[__name__].__class__ = VerboseModule 1681 1682.. note:: 1683 Defining module ``__getattr__`` and setting module ``__class__`` only 1684 affect lookups made using the attribute access syntax -- directly accessing 1685 the module globals (whether by code within the module, or via a reference 1686 to the module's globals dictionary) is unaffected. 1687 1688.. versionchanged:: 3.5 1689 ``__class__`` module attribute is now writable. 1690 1691.. versionadded:: 3.7 1692 ``__getattr__`` and ``__dir__`` module attributes. 1693 1694.. seealso:: 1695 1696 :pep:`562` - Module __getattr__ and __dir__ 1697 Describes the ``__getattr__`` and ``__dir__`` functions on modules. 1698 1699 1700.. _descriptors: 1701 1702Implementing Descriptors 1703^^^^^^^^^^^^^^^^^^^^^^^^ 1704 1705The following methods only apply when an instance of the class containing the 1706method (a so-called *descriptor* class) appears in an *owner* class (the 1707descriptor must be in either the owner's class dictionary or in the class 1708dictionary for one of its parents). In the examples below, "the attribute" 1709refers to the attribute whose name is the key of the property in the owner 1710class' :attr:`~object.__dict__`. 1711 1712 1713.. method:: object.__get__(self, instance, owner=None) 1714 1715 Called to get the attribute of the owner class (class attribute access) or 1716 of an instance of that class (instance attribute access). The optional 1717 *owner* argument is the owner class, while *instance* is the instance that 1718 the attribute was accessed through, or ``None`` when the attribute is 1719 accessed through the *owner*. 1720 1721 This method should return the computed attribute value or raise an 1722 :exc:`AttributeError` exception. 1723 1724 :PEP:`252` specifies that :meth:`__get__` is callable with one or two 1725 arguments. Python's own built-in descriptors support this specification; 1726 however, it is likely that some third-party tools have descriptors 1727 that require both arguments. Python's own :meth:`__getattribute__` 1728 implementation always passes in both arguments whether they are required 1729 or not. 1730 1731.. method:: object.__set__(self, instance, value) 1732 1733 Called to set the attribute on an instance *instance* of the owner class to a 1734 new value, *value*. 1735 1736 Note, adding :meth:`__set__` or :meth:`__delete__` changes the kind of 1737 descriptor to a "data descriptor". See :ref:`descriptor-invocation` for 1738 more details. 1739 1740.. method:: object.__delete__(self, instance) 1741 1742 Called to delete the attribute on an instance *instance* of the owner class. 1743 1744 1745The attribute :attr:`__objclass__` is interpreted by the :mod:`inspect` module 1746as specifying the class where this object was defined (setting this 1747appropriately can assist in runtime introspection of dynamic class attributes). 1748For callables, it may indicate that an instance of the given type (or a 1749subclass) is expected or required as the first positional argument (for example, 1750CPython sets this attribute for unbound methods that are implemented in C). 1751 1752 1753.. _descriptor-invocation: 1754 1755Invoking Descriptors 1756^^^^^^^^^^^^^^^^^^^^ 1757 1758In general, a descriptor is an object attribute with "binding behavior", one 1759whose attribute access has been overridden by methods in the descriptor 1760protocol: :meth:`~object.__get__`, :meth:`~object.__set__`, and 1761:meth:`~object.__delete__`. If any of 1762those methods are defined for an object, it is said to be a descriptor. 1763 1764The default behavior for attribute access is to get, set, or delete the 1765attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain 1766starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and 1767continuing through the base classes of ``type(a)`` excluding metaclasses. 1768 1769However, if the looked-up value is an object defining one of the descriptor 1770methods, then Python may override the default behavior and invoke the descriptor 1771method instead. Where this occurs in the precedence chain depends on which 1772descriptor methods were defined and how they were called. 1773 1774The starting point for descriptor invocation is a binding, ``a.x``. How the 1775arguments are assembled depends on ``a``: 1776 1777Direct Call 1778 The simplest and least common call is when user code directly invokes a 1779 descriptor method: ``x.__get__(a)``. 1780 1781Instance Binding 1782 If binding to an object instance, ``a.x`` is transformed into the call: 1783 ``type(a).__dict__['x'].__get__(a, type(a))``. 1784 1785Class Binding 1786 If binding to a class, ``A.x`` is transformed into the call: 1787 ``A.__dict__['x'].__get__(None, A)``. 1788 1789Super Binding 1790 If ``a`` is an instance of :class:`super`, then the binding ``super(B, obj).m()`` 1791 searches ``obj.__class__.__mro__`` for the base class ``A`` 1792 immediately following ``B`` and then invokes the descriptor with the call: 1793 ``A.__dict__['m'].__get__(obj, obj.__class__)``. 1794 1795For instance bindings, the precedence of descriptor invocation depends on 1796which descriptor methods are defined. A descriptor can define any combination 1797of :meth:`~object.__get__`, :meth:`~object.__set__` and 1798:meth:`~object.__delete__`. If it does not 1799define :meth:`__get__`, then accessing the attribute will return the descriptor 1800object itself unless there is a value in the object's instance dictionary. If 1801the descriptor defines :meth:`__set__` and/or :meth:`__delete__`, it is a data 1802descriptor; if it defines neither, it is a non-data descriptor. Normally, data 1803descriptors define both :meth:`__get__` and :meth:`__set__`, while non-data 1804descriptors have just the :meth:`__get__` method. Data descriptors with 1805:meth:`__get__` and :meth:`__set__` (and/or :meth:`__delete__`) defined always override a redefinition in an 1806instance dictionary. In contrast, non-data descriptors can be overridden by 1807instances. 1808 1809Python methods (including those decorated with 1810:func:`@staticmethod <staticmethod>` and :func:`@classmethod <classmethod>`) are 1811implemented as non-data descriptors. Accordingly, instances can redefine and 1812override methods. This allows individual instances to acquire behaviors that 1813differ from other instances of the same class. 1814 1815The :func:`property` function is implemented as a data descriptor. Accordingly, 1816instances cannot override the behavior of a property. 1817 1818 1819.. _slots: 1820 1821__slots__ 1822^^^^^^^^^ 1823 1824*__slots__* allow us to explicitly declare data members (like 1825properties) and deny the creation of :attr:`~object.__dict__` and *__weakref__* 1826(unless explicitly declared in *__slots__* or available in a parent.) 1827 1828The space saved over using :attr:`~object.__dict__` can be significant. 1829Attribute lookup speed can be significantly improved as well. 1830 1831.. data:: object.__slots__ 1832 1833 This class variable can be assigned a string, iterable, or sequence of 1834 strings with variable names used by instances. *__slots__* reserves space 1835 for the declared variables and prevents the automatic creation of 1836 :attr:`~object.__dict__` 1837 and *__weakref__* for each instance. 1838 1839 1840Notes on using *__slots__* 1841"""""""""""""""""""""""""" 1842 1843* When inheriting from a class without *__slots__*, the 1844 :attr:`~object.__dict__` and 1845 *__weakref__* attribute of the instances will always be accessible. 1846 1847* Without a :attr:`~object.__dict__` variable, instances cannot be assigned new 1848 variables not 1849 listed in the *__slots__* definition. Attempts to assign to an unlisted 1850 variable name raises :exc:`AttributeError`. If dynamic assignment of new 1851 variables is desired, then add ``'__dict__'`` to the sequence of strings in 1852 the *__slots__* declaration. 1853 1854* Without a *__weakref__* variable for each instance, classes defining 1855 *__slots__* do not support :mod:`weak references <weakref>` to its instances. 1856 If weak reference 1857 support is needed, then add ``'__weakref__'`` to the sequence of strings in the 1858 *__slots__* declaration. 1859 1860* *__slots__* are implemented at the class level by creating :ref:`descriptors <descriptors>` 1861 for each variable name. As a result, class attributes 1862 cannot be used to set default values for instance variables defined by 1863 *__slots__*; otherwise, the class attribute would overwrite the descriptor 1864 assignment. 1865 1866* The action of a *__slots__* declaration is not limited to the class 1867 where it is defined. *__slots__* declared in parents are available in 1868 child classes. However, child subclasses will get a :attr:`~object.__dict__` and 1869 *__weakref__* unless they also define *__slots__* (which should only 1870 contain names of any *additional* slots). 1871 1872* If a class defines a slot also defined in a base class, the instance variable 1873 defined by the base class slot is inaccessible (except by retrieving its 1874 descriptor directly from the base class). This renders the meaning of the 1875 program undefined. In the future, a check may be added to prevent this. 1876 1877* Nonempty *__slots__* does not work for classes derived from "variable-length" 1878 built-in types such as :class:`int`, :class:`bytes` and :class:`tuple`. 1879 1880* Any non-string :term:`iterable` may be assigned to *__slots__*. 1881 1882* If a :class:`dictionary <dict>` is used to assign *__slots__*, the dictionary 1883 keys will be used as the slot names. The values of the dictionary can be used 1884 to provide per-attribute docstrings that will be recognised by 1885 :func:`inspect.getdoc` and displayed in the output of :func:`help`. 1886 1887* :attr:`~instance.__class__` assignment works only if both classes have the 1888 same *__slots__*. 1889 1890* :ref:`Multiple inheritance <tut-multiple>` with multiple slotted parent 1891 classes can be used, 1892 but only one parent is allowed to have attributes created by slots 1893 (the other bases must have empty slot layouts) - violations raise 1894 :exc:`TypeError`. 1895 1896* If an :term:`iterator` is used for *__slots__* then a :term:`descriptor` is 1897 created for each 1898 of the iterator's values. However, the *__slots__* attribute will be an empty 1899 iterator. 1900 1901.. _class-customization: 1902 1903Customizing class creation 1904-------------------------- 1905 1906Whenever a class inherits from another class, :meth:`~object.__init_subclass__` is 1907called on that class. This way, it is possible to write classes which 1908change the behavior of subclasses. This is closely related to class 1909decorators, but where class decorators only affect the specific class they're 1910applied to, ``__init_subclass__`` solely applies to future subclasses of the 1911class defining the method. 1912 1913.. classmethod:: object.__init_subclass__(cls) 1914 1915 This method is called whenever the containing class is subclassed. 1916 *cls* is then the new subclass. If defined as a normal instance method, 1917 this method is implicitly converted to a class method. 1918 1919 Keyword arguments which are given to a new class are passed to 1920 the parent's class ``__init_subclass__``. For compatibility with 1921 other classes using ``__init_subclass__``, one should take out the 1922 needed keyword arguments and pass the others over to the base 1923 class, as in:: 1924 1925 class Philosopher: 1926 def __init_subclass__(cls, /, default_name, **kwargs): 1927 super().__init_subclass__(**kwargs) 1928 cls.default_name = default_name 1929 1930 class AustralianPhilosopher(Philosopher, default_name="Bruce"): 1931 pass 1932 1933 The default implementation ``object.__init_subclass__`` does 1934 nothing, but raises an error if it is called with any arguments. 1935 1936 .. note:: 1937 1938 The metaclass hint ``metaclass`` is consumed by the rest of the type 1939 machinery, and is never passed to ``__init_subclass__`` implementations. 1940 The actual metaclass (rather than the explicit hint) can be accessed as 1941 ``type(cls)``. 1942 1943 .. versionadded:: 3.6 1944 1945 1946When a class is created, :meth:`type.__new__` scans the class variables 1947and makes callbacks to those with a :meth:`~object.__set_name__` hook. 1948 1949.. method:: object.__set_name__(self, owner, name) 1950 1951 Automatically called at the time the owning class *owner* is 1952 created. The object has been assigned to *name* in that class:: 1953 1954 class A: 1955 x = C() # Automatically calls: x.__set_name__(A, 'x') 1956 1957 If the class variable is assigned after the class is created, 1958 :meth:`__set_name__` will not be called automatically. 1959 If needed, :meth:`__set_name__` can be called directly:: 1960 1961 class A: 1962 pass 1963 1964 c = C() 1965 A.x = c # The hook is not called 1966 c.__set_name__(A, 'x') # Manually invoke the hook 1967 1968 See :ref:`class-object-creation` for more details. 1969 1970 .. versionadded:: 3.6 1971 1972 1973.. _metaclasses: 1974 1975Metaclasses 1976^^^^^^^^^^^ 1977 1978.. index:: 1979 single: metaclass 1980 builtin: type 1981 single: = (equals); class definition 1982 1983By default, classes are constructed using :func:`type`. The class body is 1984executed in a new namespace and the class name is bound locally to the 1985result of ``type(name, bases, namespace)``. 1986 1987The class creation process can be customized by passing the ``metaclass`` 1988keyword argument in the class definition line, or by inheriting from an 1989existing class that included such an argument. In the following example, 1990both ``MyClass`` and ``MySubclass`` are instances of ``Meta``:: 1991 1992 class Meta(type): 1993 pass 1994 1995 class MyClass(metaclass=Meta): 1996 pass 1997 1998 class MySubclass(MyClass): 1999 pass 2000 2001Any other keyword arguments that are specified in the class definition are 2002passed through to all metaclass operations described below. 2003 2004When a class definition is executed, the following steps occur: 2005 2006* MRO entries are resolved; 2007* the appropriate metaclass is determined; 2008* the class namespace is prepared; 2009* the class body is executed; 2010* the class object is created. 2011 2012 2013Resolving MRO entries 2014^^^^^^^^^^^^^^^^^^^^^ 2015 2016If a base that appears in class definition is not an instance of :class:`type`, 2017then an ``__mro_entries__`` method is searched on it. If found, it is called 2018with the original bases tuple. This method must return a tuple of classes that 2019will be used instead of this base. The tuple may be empty, in such case 2020the original base is ignored. 2021 2022.. seealso:: 2023 2024 :pep:`560` - Core support for typing module and generic types 2025 2026 2027Determining the appropriate metaclass 2028^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2029.. index:: 2030 single: metaclass hint 2031 2032The appropriate metaclass for a class definition is determined as follows: 2033 2034* if no bases and no explicit metaclass are given, then :func:`type` is used; 2035* if an explicit metaclass is given and it is *not* an instance of 2036 :func:`type`, then it is used directly as the metaclass; 2037* if an instance of :func:`type` is given as the explicit metaclass, or 2038 bases are defined, then the most derived metaclass is used. 2039 2040The most derived metaclass is selected from the explicitly specified 2041metaclass (if any) and the metaclasses (i.e. ``type(cls)``) of all specified 2042base classes. The most derived metaclass is one which is a subtype of *all* 2043of these candidate metaclasses. If none of the candidate metaclasses meets 2044that criterion, then the class definition will fail with ``TypeError``. 2045 2046 2047.. _prepare: 2048 2049Preparing the class namespace 2050^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2051 2052.. index:: 2053 single: __prepare__ (metaclass method) 2054 2055Once the appropriate metaclass has been identified, then the class namespace 2056is prepared. If the metaclass has a ``__prepare__`` attribute, it is called 2057as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the 2058additional keyword arguments, if any, come from the class definition). The 2059``__prepare__`` method should be implemented as a 2060:func:`classmethod <classmethod>`. The 2061namespace returned by ``__prepare__`` is passed in to ``__new__``, but when 2062the final class object is created the namespace is copied into a new ``dict``. 2063 2064If the metaclass has no ``__prepare__`` attribute, then the class namespace 2065is initialised as an empty ordered mapping. 2066 2067.. seealso:: 2068 2069 :pep:`3115` - Metaclasses in Python 3000 2070 Introduced the ``__prepare__`` namespace hook 2071 2072 2073Executing the class body 2074^^^^^^^^^^^^^^^^^^^^^^^^ 2075 2076.. index:: 2077 single: class; body 2078 2079The class body is executed (approximately) as 2080``exec(body, globals(), namespace)``. The key difference from a normal 2081call to :func:`exec` is that lexical scoping allows the class body (including 2082any methods) to reference names from the current and outer scopes when the 2083class definition occurs inside a function. 2084 2085However, even when the class definition occurs inside the function, methods 2086defined inside the class still cannot see names defined at the class scope. 2087Class variables must be accessed through the first parameter of instance or 2088class methods, or through the implicit lexically scoped ``__class__`` reference 2089described in the next section. 2090 2091.. _class-object-creation: 2092 2093Creating the class object 2094^^^^^^^^^^^^^^^^^^^^^^^^^ 2095 2096.. index:: 2097 single: __class__ (method cell) 2098 single: __classcell__ (class namespace entry) 2099 2100 2101Once the class namespace has been populated by executing the class body, 2102the class object is created by calling 2103``metaclass(name, bases, namespace, **kwds)`` (the additional keywords 2104passed here are the same as those passed to ``__prepare__``). 2105 2106This class object is the one that will be referenced by the zero-argument 2107form of :func:`super`. ``__class__`` is an implicit closure reference 2108created by the compiler if any methods in a class body refer to either 2109``__class__`` or ``super``. This allows the zero argument form of 2110:func:`super` to correctly identify the class being defined based on 2111lexical scoping, while the class or instance that was used to make the 2112current call is identified based on the first argument passed to the method. 2113 2114.. impl-detail:: 2115 2116 In CPython 3.6 and later, the ``__class__`` cell is passed to the metaclass 2117 as a ``__classcell__`` entry in the class namespace. If present, this must 2118 be propagated up to the ``type.__new__`` call in order for the class to be 2119 initialised correctly. 2120 Failing to do so will result in a :exc:`RuntimeError` in Python 3.8. 2121 2122When using the default metaclass :class:`type`, or any metaclass that ultimately 2123calls ``type.__new__``, the following additional customization steps are 2124invoked after creating the class object: 2125 21261) The ``type.__new__`` method collects all of the attributes in the class 2127 namespace that define a :meth:`~object.__set_name__` method; 21282) Those ``__set_name__`` methods are called with the class 2129 being defined and the assigned name of that particular attribute; 21303) The :meth:`~object.__init_subclass__` hook is called on the 2131 immediate parent of the new class in its method resolution order. 2132 2133After the class object is created, it is passed to the class decorators 2134included in the class definition (if any) and the resulting object is bound 2135in the local namespace as the defined class. 2136 2137When a new class is created by ``type.__new__``, the object provided as the 2138namespace parameter is copied to a new ordered mapping and the original 2139object is discarded. The new copy is wrapped in a read-only proxy, which 2140becomes the :attr:`~object.__dict__` attribute of the class object. 2141 2142.. seealso:: 2143 2144 :pep:`3135` - New super 2145 Describes the implicit ``__class__`` closure reference 2146 2147 2148Uses for metaclasses 2149^^^^^^^^^^^^^^^^^^^^ 2150 2151The potential uses for metaclasses are boundless. Some ideas that have been 2152explored include enum, logging, interface checking, automatic delegation, 2153automatic property creation, proxies, frameworks, and automatic resource 2154locking/synchronization. 2155 2156 2157Customizing instance and subclass checks 2158---------------------------------------- 2159 2160The following methods are used to override the default behavior of the 2161:func:`isinstance` and :func:`issubclass` built-in functions. 2162 2163In particular, the metaclass :class:`abc.ABCMeta` implements these methods in 2164order to allow the addition of Abstract Base Classes (ABCs) as "virtual base 2165classes" to any class or type (including built-in types), including other 2166ABCs. 2167 2168.. method:: class.__instancecheck__(self, instance) 2169 2170 Return true if *instance* should be considered a (direct or indirect) 2171 instance of *class*. If defined, called to implement ``isinstance(instance, 2172 class)``. 2173 2174 2175.. method:: class.__subclasscheck__(self, subclass) 2176 2177 Return true if *subclass* should be considered a (direct or indirect) 2178 subclass of *class*. If defined, called to implement ``issubclass(subclass, 2179 class)``. 2180 2181 2182Note that these methods are looked up on the type (metaclass) of a class. They 2183cannot be defined as class methods in the actual class. This is consistent with 2184the lookup of special methods that are called on instances, only in this 2185case the instance is itself a class. 2186 2187.. seealso:: 2188 2189 :pep:`3119` - Introducing Abstract Base Classes 2190 Includes the specification for customizing :func:`isinstance` and 2191 :func:`issubclass` behavior through :meth:`~class.__instancecheck__` and 2192 :meth:`~class.__subclasscheck__`, with motivation for this functionality 2193 in the context of adding Abstract Base Classes (see the :mod:`abc` 2194 module) to the language. 2195 2196 2197Emulating generic types 2198----------------------- 2199 2200When using :term:`type annotations<annotation>`, it is often useful to 2201*parameterize* a :term:`generic type` using Python's square-brackets notation. 2202For example, the annotation ``list[int]`` might be used to signify a 2203:class:`list` in which all the elements are of type :class:`int`. 2204 2205.. seealso:: 2206 2207 :pep:`484` - Type Hints 2208 Introducing Python's framework for type annotations 2209 2210 :ref:`Generic Alias Types<types-genericalias>` 2211 Documentation for objects representing parameterized generic classes 2212 2213 :ref:`Generics`, :ref:`user-defined generics<user-defined-generics>` and :class:`typing.Generic` 2214 Documentation on how to implement generic classes that can be 2215 parameterized at runtime and understood by static type-checkers. 2216 2217A class can *generally* only be parameterized if it defines the special 2218class method ``__class_getitem__()``. 2219 2220.. classmethod:: object.__class_getitem__(cls, key) 2221 2222 Return an object representing the specialization of a generic class 2223 by type arguments found in *key*. 2224 2225 When defined on a class, ``__class_getitem__()`` is automatically a class 2226 method. As such, there is no need for it to be decorated with 2227 :func:`@classmethod<classmethod>` when it is defined. 2228 2229 2230The purpose of *__class_getitem__* 2231^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2232 2233The purpose of :meth:`~object.__class_getitem__` is to allow runtime 2234parameterization of standard-library generic classes in order to more easily 2235apply :term:`type hints<type hint>` to these classes. 2236 2237To implement custom generic classes that can be parameterized at runtime and 2238understood by static type-checkers, users should either inherit from a standard 2239library class that already implements :meth:`~object.__class_getitem__`, or 2240inherit from :class:`typing.Generic`, which has its own implementation of 2241``__class_getitem__()``. 2242 2243Custom implementations of :meth:`~object.__class_getitem__` on classes defined 2244outside of the standard library may not be understood by third-party 2245type-checkers such as mypy. Using ``__class_getitem__()`` on any class for 2246purposes other than type hinting is discouraged. 2247 2248 2249.. _classgetitem-versus-getitem: 2250 2251 2252*__class_getitem__* versus *__getitem__* 2253^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2254 2255Usually, the :ref:`subscription<subscriptions>` of an object using square 2256brackets will call the :meth:`~object.__getitem__` instance method defined on 2257the object's class. However, if the object being subscribed is itself a class, 2258the class method :meth:`~object.__class_getitem__` may be called instead. 2259``__class_getitem__()`` should return a :ref:`GenericAlias<types-genericalias>` 2260object if it is properly defined. 2261 2262Presented with the :term:`expression` ``obj[x]``, the Python interpreter 2263follows something like the following process to decide whether 2264:meth:`~object.__getitem__` or :meth:`~object.__class_getitem__` should be 2265called:: 2266 2267 from inspect import isclass 2268 2269 def subscribe(obj, x): 2270 """Return the result of the expression `obj[x]`""" 2271 2272 class_of_obj = type(obj) 2273 2274 # If the class of obj defines __getitem__, 2275 # call class_of_obj.__getitem__(obj, x) 2276 if hasattr(class_of_obj, '__getitem__'): 2277 return class_of_obj.__getitem__(obj, x) 2278 2279 # Else, if obj is a class and defines __class_getitem__, 2280 # call obj.__class_getitem__(x) 2281 elif isclass(obj) and hasattr(obj, '__class_getitem__'): 2282 return obj.__class_getitem__(x) 2283 2284 # Else, raise an exception 2285 else: 2286 raise TypeError( 2287 f"'{class_of_obj.__name__}' object is not subscriptable" 2288 ) 2289 2290In Python, all classes are themselves instances of other classes. The class of 2291a class is known as that class's :term:`metaclass`, and most classes have the 2292:class:`type` class as their metaclass. :class:`type` does not define 2293:meth:`~object.__getitem__`, meaning that expressions such as ``list[int]``, 2294``dict[str, float]`` and ``tuple[str, bytes]`` all result in 2295:meth:`~object.__class_getitem__` being called:: 2296 2297 >>> # list has class "type" as its metaclass, like most classes: 2298 >>> type(list) 2299 <class 'type'> 2300 >>> type(dict) == type(list) == type(tuple) == type(str) == type(bytes) 2301 True 2302 >>> # "list[int]" calls "list.__class_getitem__(int)" 2303 >>> list[int] 2304 list[int] 2305 >>> # list.__class_getitem__ returns a GenericAlias object: 2306 >>> type(list[int]) 2307 <class 'types.GenericAlias'> 2308 2309However, if a class has a custom metaclass that defines 2310:meth:`~object.__getitem__`, subscribing the class may result in different 2311behaviour. An example of this can be found in the :mod:`enum` module:: 2312 2313 >>> from enum import Enum 2314 >>> class Menu(Enum): 2315 ... """A breakfast menu""" 2316 ... SPAM = 'spam' 2317 ... BACON = 'bacon' 2318 ... 2319 >>> # Enum classes have a custom metaclass: 2320 >>> type(Menu) 2321 <class 'enum.EnumMeta'> 2322 >>> # EnumMeta defines __getitem__, 2323 >>> # so __class_getitem__ is not called, 2324 >>> # and the result is not a GenericAlias object: 2325 >>> Menu['SPAM'] 2326 <Menu.SPAM: 'spam'> 2327 >>> type(Menu['SPAM']) 2328 <enum 'Menu'> 2329 2330 2331.. seealso:: 2332 :pep:`560` - Core Support for typing module and generic types 2333 Introducing :meth:`~object.__class_getitem__`, and outlining when a 2334 :ref:`subscription<subscriptions>` results in ``__class_getitem__()`` 2335 being called instead of :meth:`~object.__getitem__` 2336 2337 2338.. _callable-types: 2339 2340Emulating callable objects 2341-------------------------- 2342 2343 2344.. method:: object.__call__(self[, args...]) 2345 2346 .. index:: pair: call; instance 2347 2348 Called when the instance is "called" as a function; if this method is defined, 2349 ``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, arg1, ...)``. 2350 2351 2352.. _sequence-types: 2353 2354Emulating container types 2355------------------------- 2356 2357The following methods can be defined to implement container objects. Containers 2358usually are :term:`sequences <sequence>` (such as :class:`lists <list>` or 2359:class:`tuples <tuple>`) or :term:`mappings <mapping>` (like 2360:class:`dictionaries <dict>`), 2361but can represent other containers as well. The first set of methods is used 2362either to emulate a sequence or to emulate a mapping; the difference is that for 2363a sequence, the allowable keys should be the integers *k* for which ``0 <= k < 2364N`` where *N* is the length of the sequence, or :class:`slice` objects, which define a 2365range of items. It is also recommended that mappings provide the methods 2366:meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`, :meth:`clear`, 2367:meth:`setdefault`, :meth:`pop`, :meth:`popitem`, :meth:`!copy`, and 2368:meth:`update` behaving similar to those for Python's standard :class:`dictionary <dict>` 2369objects. The :mod:`collections.abc` module provides a 2370:class:`~collections.abc.MutableMapping` 2371:term:`abstract base class` to help create those methods from a base set of 2372:meth:`~object.__getitem__`, :meth:`~object.__setitem__`, :meth:`~object.__delitem__`, and :meth:`keys`. 2373Mutable sequences should provide methods :meth:`append`, :meth:`count`, 2374:meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`, 2375:meth:`reverse` and :meth:`sort`, like Python standard :class:`list` 2376objects. Finally, 2377sequence types should implement addition (meaning concatenation) and 2378multiplication (meaning repetition) by defining the methods 2379:meth:`~object.__add__`, :meth:`~object.__radd__`, :meth:`~object.__iadd__`, 2380:meth:`~object.__mul__`, :meth:`~object.__rmul__` and :meth:`~object.__imul__` 2381described below; they should not define other numerical 2382operators. It is recommended that both mappings and sequences implement the 2383:meth:`~object.__contains__` method to allow efficient use of the ``in`` 2384operator; for 2385mappings, ``in`` should search the mapping's keys; for sequences, it should 2386search through the values. It is further recommended that both mappings and 2387sequences implement the :meth:`~object.__iter__` method to allow efficient iteration 2388through the container; for mappings, :meth:`__iter__` should iterate 2389through the object's keys; for sequences, it should iterate through the values. 2390 2391.. method:: object.__len__(self) 2392 2393 .. index:: 2394 builtin: len 2395 single: __bool__() (object method) 2396 2397 Called to implement the built-in function :func:`len`. Should return the length 2398 of the object, an integer ``>=`` 0. Also, an object that doesn't define a 2399 :meth:`__bool__` method and whose :meth:`__len__` method returns zero is 2400 considered to be false in a Boolean context. 2401 2402 .. impl-detail:: 2403 2404 In CPython, the length is required to be at most :attr:`sys.maxsize`. 2405 If the length is larger than :attr:`!sys.maxsize` some features (such as 2406 :func:`len`) may raise :exc:`OverflowError`. To prevent raising 2407 :exc:`!OverflowError` by truth value testing, an object must define a 2408 :meth:`__bool__` method. 2409 2410 2411.. method:: object.__length_hint__(self) 2412 2413 Called to implement :func:`operator.length_hint`. Should return an estimated 2414 length for the object (which may be greater or less than the actual length). 2415 The length must be an integer ``>=`` 0. The return value may also be 2416 :const:`NotImplemented`, which is treated the same as if the 2417 ``__length_hint__`` method didn't exist at all. This method is purely an 2418 optimization and is never required for correctness. 2419 2420 .. versionadded:: 3.4 2421 2422 2423.. index:: object: slice 2424 2425.. note:: 2426 2427 Slicing is done exclusively with the following three methods. A call like :: 2428 2429 a[1:2] = b 2430 2431 is translated to :: 2432 2433 a[slice(1, 2, None)] = b 2434 2435 and so forth. Missing slice items are always filled in with ``None``. 2436 2437 2438.. method:: object.__getitem__(self, key) 2439 2440 Called to implement evaluation of ``self[key]``. For :term:`sequence` types, 2441 the accepted keys should be integers and slice objects. Note that the 2442 special interpretation of negative indexes (if the class wishes to emulate a 2443 :term:`sequence` type) is up to the :meth:`__getitem__` method. If *key* is 2444 of an inappropriate type, :exc:`TypeError` may be raised; if of a value 2445 outside the set of indexes for the sequence (after any special 2446 interpretation of negative values), :exc:`IndexError` should be raised. For 2447 :term:`mapping` types, if *key* is missing (not in the container), 2448 :exc:`KeyError` should be raised. 2449 2450 .. note:: 2451 2452 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for 2453 illegal indexes to allow proper detection of the end of the sequence. 2454 2455 .. note:: 2456 2457 When :ref:`subscripting<subscriptions>` a *class*, the special 2458 class method :meth:`~object.__class_getitem__` may be called instead of 2459 ``__getitem__()``. See :ref:`classgetitem-versus-getitem` for more 2460 details. 2461 2462 2463.. method:: object.__setitem__(self, key, value) 2464 2465 Called to implement assignment to ``self[key]``. Same note as for 2466 :meth:`__getitem__`. This should only be implemented for mappings if the 2467 objects support changes to the values for keys, or if new keys can be added, or 2468 for sequences if elements can be replaced. The same exceptions should be raised 2469 for improper *key* values as for the :meth:`__getitem__` method. 2470 2471 2472.. method:: object.__delitem__(self, key) 2473 2474 Called to implement deletion of ``self[key]``. Same note as for 2475 :meth:`__getitem__`. This should only be implemented for mappings if the 2476 objects support removal of keys, or for sequences if elements can be removed 2477 from the sequence. The same exceptions should be raised for improper *key* 2478 values as for the :meth:`__getitem__` method. 2479 2480 2481.. method:: object.__missing__(self, key) 2482 2483 Called by :class:`dict`\ .\ :meth:`__getitem__` to implement ``self[key]`` for dict subclasses 2484 when key is not in the dictionary. 2485 2486 2487.. method:: object.__iter__(self) 2488 2489 This method is called when an :term:`iterator` is required for a container. 2490 This method should return a new iterator object that can iterate over all the 2491 objects in the container. For mappings, it should iterate over the keys of 2492 the container. 2493 2494 2495.. method:: object.__reversed__(self) 2496 2497 Called (if present) by the :func:`reversed` built-in to implement 2498 reverse iteration. It should return a new iterator object that iterates 2499 over all the objects in the container in reverse order. 2500 2501 If the :meth:`__reversed__` method is not provided, the :func:`reversed` 2502 built-in will fall back to using the sequence protocol (:meth:`__len__` and 2503 :meth:`__getitem__`). Objects that support the sequence protocol should 2504 only provide :meth:`__reversed__` if they can provide an implementation 2505 that is more efficient than the one provided by :func:`reversed`. 2506 2507 2508The membership test operators (:keyword:`in` and :keyword:`not in`) are normally 2509implemented as an iteration through a container. However, container objects can 2510supply the following special method with a more efficient implementation, which 2511also does not require the object be iterable. 2512 2513.. method:: object.__contains__(self, item) 2514 2515 Called to implement membership test operators. Should return true if *item* 2516 is in *self*, false otherwise. For mapping objects, this should consider the 2517 keys of the mapping rather than the values or the key-item pairs. 2518 2519 For objects that don't define :meth:`__contains__`, the membership test first 2520 tries iteration via :meth:`__iter__`, then the old sequence iteration 2521 protocol via :meth:`__getitem__`, see :ref:`this section in the language 2522 reference <membership-test-details>`. 2523 2524 2525.. _numeric-types: 2526 2527Emulating numeric types 2528----------------------- 2529 2530The following methods can be defined to emulate numeric objects. Methods 2531corresponding to operations that are not supported by the particular kind of 2532number implemented (e.g., bitwise operations for non-integral numbers) should be 2533left undefined. 2534 2535 2536.. method:: object.__add__(self, other) 2537 object.__sub__(self, other) 2538 object.__mul__(self, other) 2539 object.__matmul__(self, other) 2540 object.__truediv__(self, other) 2541 object.__floordiv__(self, other) 2542 object.__mod__(self, other) 2543 object.__divmod__(self, other) 2544 object.__pow__(self, other[, modulo]) 2545 object.__lshift__(self, other) 2546 object.__rshift__(self, other) 2547 object.__and__(self, other) 2548 object.__xor__(self, other) 2549 object.__or__(self, other) 2550 2551 .. index:: 2552 builtin: divmod 2553 builtin: pow 2554 builtin: pow 2555 2556 These methods are called to implement the binary arithmetic operations 2557 (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, 2558 :func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``). For instance, to 2559 evaluate the expression ``x + y``, where *x* is an instance of a class that 2560 has an :meth:`__add__` method, ``x.__add__(y)`` is called. The 2561 :meth:`__divmod__` method should be the equivalent to using 2562 :meth:`__floordiv__` and :meth:`__mod__`; it should not be related to 2563 :meth:`__truediv__`. Note that :meth:`__pow__` should be defined to accept 2564 an optional third argument if the ternary version of the built-in :func:`pow` 2565 function is to be supported. 2566 2567 If one of those methods does not support the operation with the supplied 2568 arguments, it should return ``NotImplemented``. 2569 2570 2571.. method:: object.__radd__(self, other) 2572 object.__rsub__(self, other) 2573 object.__rmul__(self, other) 2574 object.__rmatmul__(self, other) 2575 object.__rtruediv__(self, other) 2576 object.__rfloordiv__(self, other) 2577 object.__rmod__(self, other) 2578 object.__rdivmod__(self, other) 2579 object.__rpow__(self, other[, modulo]) 2580 object.__rlshift__(self, other) 2581 object.__rrshift__(self, other) 2582 object.__rand__(self, other) 2583 object.__rxor__(self, other) 2584 object.__ror__(self, other) 2585 2586 .. index:: 2587 builtin: divmod 2588 builtin: pow 2589 2590 These methods are called to implement the binary arithmetic operations 2591 (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, 2592 :func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``) with reflected 2593 (swapped) operands. These functions are only called if the left operand does 2594 not support the corresponding operation [#]_ and the operands are of different 2595 types. [#]_ For instance, to evaluate the expression ``x - y``, where *y* is 2596 an instance of a class that has an :meth:`__rsub__` method, ``y.__rsub__(x)`` 2597 is called if ``x.__sub__(y)`` returns *NotImplemented*. 2598 2599 .. index:: builtin: pow 2600 2601 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the 2602 coercion rules would become too complicated). 2603 2604 .. note:: 2605 2606 If the right operand's type is a subclass of the left operand's type and 2607 that subclass provides a different implementation of the reflected method 2608 for the operation, this method will be called before the left operand's 2609 non-reflected method. This behavior allows subclasses to override their 2610 ancestors' operations. 2611 2612 2613.. method:: object.__iadd__(self, other) 2614 object.__isub__(self, other) 2615 object.__imul__(self, other) 2616 object.__imatmul__(self, other) 2617 object.__itruediv__(self, other) 2618 object.__ifloordiv__(self, other) 2619 object.__imod__(self, other) 2620 object.__ipow__(self, other[, modulo]) 2621 object.__ilshift__(self, other) 2622 object.__irshift__(self, other) 2623 object.__iand__(self, other) 2624 object.__ixor__(self, other) 2625 object.__ior__(self, other) 2626 2627 These methods are called to implement the augmented arithmetic assignments 2628 (``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, 2629 ``>>=``, ``&=``, ``^=``, ``|=``). These methods should attempt to do the 2630 operation in-place (modifying *self*) and return the result (which could be, 2631 but does not have to be, *self*). If a specific method is not defined, the 2632 augmented assignment falls back to the normal methods. For instance, if *x* 2633 is an instance of a class with an :meth:`__iadd__` method, ``x += y`` is 2634 equivalent to ``x = x.__iadd__(y)`` . Otherwise, ``x.__add__(y)`` and 2635 ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``. In 2636 certain situations, augmented assignment can result in unexpected errors (see 2637 :ref:`faq-augmented-assignment-tuple-error`), but this behavior is in fact 2638 part of the data model. 2639 2640 2641.. method:: object.__neg__(self) 2642 object.__pos__(self) 2643 object.__abs__(self) 2644 object.__invert__(self) 2645 2646 .. index:: builtin: abs 2647 2648 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs` 2649 and ``~``). 2650 2651 2652.. method:: object.__complex__(self) 2653 object.__int__(self) 2654 object.__float__(self) 2655 2656 .. index:: 2657 builtin: complex 2658 builtin: int 2659 builtin: float 2660 2661 Called to implement the built-in functions :func:`complex`, 2662 :func:`int` and :func:`float`. Should return a value 2663 of the appropriate type. 2664 2665 2666.. method:: object.__index__(self) 2667 2668 Called to implement :func:`operator.index`, and whenever Python needs to 2669 losslessly convert the numeric object to an integer object (such as in 2670 slicing, or in the built-in :func:`bin`, :func:`hex` and :func:`oct` 2671 functions). Presence of this method indicates that the numeric object is 2672 an integer type. Must return an integer. 2673 2674 If :meth:`__int__`, :meth:`__float__` and :meth:`__complex__` are not 2675 defined then corresponding built-in functions :func:`int`, :func:`float` 2676 and :func:`complex` fall back to :meth:`__index__`. 2677 2678 2679.. method:: object.__round__(self, [,ndigits]) 2680 object.__trunc__(self) 2681 object.__floor__(self) 2682 object.__ceil__(self) 2683 2684 .. index:: builtin: round 2685 2686 Called to implement the built-in function :func:`round` and :mod:`math` 2687 functions :func:`~math.trunc`, :func:`~math.floor` and :func:`~math.ceil`. 2688 Unless *ndigits* is passed to :meth:`!__round__` all these methods should 2689 return the value of the object truncated to an :class:`~numbers.Integral` 2690 (typically an :class:`int`). 2691 2692 The built-in function :func:`int` falls back to :meth:`__trunc__` if neither 2693 :meth:`__int__` nor :meth:`__index__` is defined. 2694 2695 2696.. _context-managers: 2697 2698With Statement Context Managers 2699------------------------------- 2700 2701A :dfn:`context manager` is an object that defines the runtime context to be 2702established when executing a :keyword:`with` statement. The context manager 2703handles the entry into, and the exit from, the desired runtime context for the 2704execution of the block of code. Context managers are normally invoked using the 2705:keyword:`!with` statement (described in section :ref:`with`), but can also be 2706used by directly invoking their methods. 2707 2708.. index:: 2709 statement: with 2710 single: context manager 2711 2712Typical uses of context managers include saving and restoring various kinds of 2713global state, locking and unlocking resources, closing opened files, etc. 2714 2715For more information on context managers, see :ref:`typecontextmanager`. 2716 2717 2718.. method:: object.__enter__(self) 2719 2720 Enter the runtime context related to this object. The :keyword:`with` statement 2721 will bind this method's return value to the target(s) specified in the 2722 :keyword:`!as` clause of the statement, if any. 2723 2724 2725.. method:: object.__exit__(self, exc_type, exc_value, traceback) 2726 2727 Exit the runtime context related to this object. The parameters describe the 2728 exception that caused the context to be exited. If the context was exited 2729 without an exception, all three arguments will be :const:`None`. 2730 2731 If an exception is supplied, and the method wishes to suppress the exception 2732 (i.e., prevent it from being propagated), it should return a true value. 2733 Otherwise, the exception will be processed normally upon exit from this method. 2734 2735 Note that :meth:`__exit__` methods should not reraise the passed-in exception; 2736 this is the caller's responsibility. 2737 2738 2739.. seealso:: 2740 2741 :pep:`343` - The "with" statement 2742 The specification, background, and examples for the Python :keyword:`with` 2743 statement. 2744 2745 2746.. _class-pattern-matching: 2747 2748Customizing positional arguments in class pattern matching 2749---------------------------------------------------------- 2750 2751When using a class name in a pattern, positional arguments in the pattern are not 2752allowed by default, i.e. ``case MyClass(x, y)`` is typically invalid without special 2753support in ``MyClass``. To be able to use that kind of patterns, the class needs to 2754define a *__match_args__* attribute. 2755 2756.. data:: object.__match_args__ 2757 2758 This class variable can be assigned a tuple of strings. When this class is 2759 used in a class pattern with positional arguments, each positional argument will 2760 be converted into a keyword argument, using the corresponding value in 2761 *__match_args__* as the keyword. The absence of this attribute is equivalent to 2762 setting it to ``()``. 2763 2764For example, if ``MyClass.__match_args__`` is ``("left", "center", "right")`` that means 2765that ``case MyClass(x, y)`` is equivalent to ``case MyClass(left=x, center=y)``. Note 2766that the number of arguments in the pattern must be smaller than or equal to the number 2767of elements in *__match_args__*; if it is larger, the pattern match attempt will raise 2768a :exc:`TypeError`. 2769 2770.. versionadded:: 3.10 2771 2772.. seealso:: 2773 2774 :pep:`634` - Structural Pattern Matching 2775 The specification for the Python ``match`` statement. 2776 2777 2778.. _special-lookup: 2779 2780Special method lookup 2781--------------------- 2782 2783For custom classes, implicit invocations of special methods are only guaranteed 2784to work correctly if defined on an object's type, not in the object's instance 2785dictionary. That behaviour is the reason why the following code raises an 2786exception:: 2787 2788 >>> class C: 2789 ... pass 2790 ... 2791 >>> c = C() 2792 >>> c.__len__ = lambda: 5 2793 >>> len(c) 2794 Traceback (most recent call last): 2795 File "<stdin>", line 1, in <module> 2796 TypeError: object of type 'C' has no len() 2797 2798The rationale behind this behaviour lies with a number of special methods such 2799as :meth:`~object.__hash__` and :meth:`~object.__repr__` that are implemented 2800by all objects, 2801including type objects. If the implicit lookup of these methods used the 2802conventional lookup process, they would fail when invoked on the type object 2803itself:: 2804 2805 >>> 1 .__hash__() == hash(1) 2806 True 2807 >>> int.__hash__() == hash(int) 2808 Traceback (most recent call last): 2809 File "<stdin>", line 1, in <module> 2810 TypeError: descriptor '__hash__' of 'int' object needs an argument 2811 2812Incorrectly attempting to invoke an unbound method of a class in this way is 2813sometimes referred to as 'metaclass confusion', and is avoided by bypassing 2814the instance when looking up special methods:: 2815 2816 >>> type(1).__hash__(1) == hash(1) 2817 True 2818 >>> type(int).__hash__(int) == hash(int) 2819 True 2820 2821In addition to bypassing any instance attributes in the interest of 2822correctness, implicit special method lookup generally also bypasses the 2823:meth:`~object.__getattribute__` method even of the object's metaclass:: 2824 2825 >>> class Meta(type): 2826 ... def __getattribute__(*args): 2827 ... print("Metaclass getattribute invoked") 2828 ... return type.__getattribute__(*args) 2829 ... 2830 >>> class C(object, metaclass=Meta): 2831 ... def __len__(self): 2832 ... return 10 2833 ... def __getattribute__(*args): 2834 ... print("Class getattribute invoked") 2835 ... return object.__getattribute__(*args) 2836 ... 2837 >>> c = C() 2838 >>> c.__len__() # Explicit lookup via instance 2839 Class getattribute invoked 2840 10 2841 >>> type(c).__len__(c) # Explicit lookup via type 2842 Metaclass getattribute invoked 2843 10 2844 >>> len(c) # Implicit lookup 2845 10 2846 2847Bypassing the :meth:`~object.__getattribute__` machinery in this fashion 2848provides significant scope for speed optimisations within the 2849interpreter, at the cost of some flexibility in the handling of 2850special methods (the special method *must* be set on the class 2851object itself in order to be consistently invoked by the interpreter). 2852 2853 2854.. index:: 2855 single: coroutine 2856 2857Coroutines 2858========== 2859 2860 2861Awaitable Objects 2862----------------- 2863 2864An :term:`awaitable` object generally implements an :meth:`~object.__await__` method. 2865:term:`Coroutine objects <coroutine>` returned from :keyword:`async def` functions 2866are awaitable. 2867 2868.. note:: 2869 2870 The :term:`generator iterator` objects returned from generators 2871 decorated with :func:`types.coroutine` or :func:`asyncio.coroutine` 2872 are also awaitable, but they do not implement :meth:`~object.__await__`. 2873 2874.. method:: object.__await__(self) 2875 2876 Must return an :term:`iterator`. Should be used to implement 2877 :term:`awaitable` objects. For instance, :class:`asyncio.Future` implements 2878 this method to be compatible with the :keyword:`await` expression. 2879 2880.. versionadded:: 3.5 2881 2882.. seealso:: :pep:`492` for additional information about awaitable objects. 2883 2884 2885.. _coroutine-objects: 2886 2887Coroutine Objects 2888----------------- 2889 2890:term:`Coroutine objects <coroutine>` are :term:`awaitable` objects. 2891A coroutine's execution can be controlled by calling :meth:`~object.__await__` and 2892iterating over the result. When the coroutine has finished executing and 2893returns, the iterator raises :exc:`StopIteration`, and the exception's 2894:attr:`~StopIteration.value` attribute holds the return value. If the 2895coroutine raises an exception, it is propagated by the iterator. Coroutines 2896should not directly raise unhandled :exc:`StopIteration` exceptions. 2897 2898Coroutines also have the methods listed below, which are analogous to 2899those of generators (see :ref:`generator-methods`). However, unlike 2900generators, coroutines do not directly support iteration. 2901 2902.. versionchanged:: 3.5.2 2903 It is a :exc:`RuntimeError` to await on a coroutine more than once. 2904 2905 2906.. method:: coroutine.send(value) 2907 2908 Starts or resumes execution of the coroutine. If *value* is ``None``, 2909 this is equivalent to advancing the iterator returned by 2910 :meth:`~object.__await__`. If *value* is not ``None``, this method delegates 2911 to the :meth:`~generator.send` method of the iterator that caused 2912 the coroutine to suspend. The result (return value, 2913 :exc:`StopIteration`, or other exception) is the same as when 2914 iterating over the :meth:`__await__` return value, described above. 2915 2916.. method:: coroutine.throw(type[, value[, traceback]]) 2917 2918 Raises the specified exception in the coroutine. This method delegates 2919 to the :meth:`~generator.throw` method of the iterator that caused 2920 the coroutine to suspend, if it has such a method. Otherwise, 2921 the exception is raised at the suspension point. The result 2922 (return value, :exc:`StopIteration`, or other exception) is the same as 2923 when iterating over the :meth:`~object.__await__` return value, described 2924 above. If the exception is not caught in the coroutine, it propagates 2925 back to the caller. 2926 2927.. method:: coroutine.close() 2928 2929 Causes the coroutine to clean itself up and exit. If the coroutine 2930 is suspended, this method first delegates to the :meth:`~generator.close` 2931 method of the iterator that caused the coroutine to suspend, if it 2932 has such a method. Then it raises :exc:`GeneratorExit` at the 2933 suspension point, causing the coroutine to immediately clean itself up. 2934 Finally, the coroutine is marked as having finished executing, even if 2935 it was never started. 2936 2937 Coroutine objects are automatically closed using the above process when 2938 they are about to be destroyed. 2939 2940.. _async-iterators: 2941 2942Asynchronous Iterators 2943---------------------- 2944 2945An *asynchronous iterator* can call asynchronous code in 2946its ``__anext__`` method. 2947 2948Asynchronous iterators can be used in an :keyword:`async for` statement. 2949 2950.. method:: object.__aiter__(self) 2951 2952 Must return an *asynchronous iterator* object. 2953 2954.. method:: object.__anext__(self) 2955 2956 Must return an *awaitable* resulting in a next value of the iterator. Should 2957 raise a :exc:`StopAsyncIteration` error when the iteration is over. 2958 2959An example of an asynchronous iterable object:: 2960 2961 class Reader: 2962 async def readline(self): 2963 ... 2964 2965 def __aiter__(self): 2966 return self 2967 2968 async def __anext__(self): 2969 val = await self.readline() 2970 if val == b'': 2971 raise StopAsyncIteration 2972 return val 2973 2974.. versionadded:: 3.5 2975 2976.. versionchanged:: 3.7 2977 Prior to Python 3.7, :meth:`~object.__aiter__` could return an *awaitable* 2978 that would resolve to an 2979 :term:`asynchronous iterator <asynchronous iterator>`. 2980 2981 Starting with Python 3.7, :meth:`~object.__aiter__` must return an 2982 asynchronous iterator object. Returning anything else 2983 will result in a :exc:`TypeError` error. 2984 2985 2986.. _async-context-managers: 2987 2988Asynchronous Context Managers 2989----------------------------- 2990 2991An *asynchronous context manager* is a *context manager* that is able to 2992suspend execution in its ``__aenter__`` and ``__aexit__`` methods. 2993 2994Asynchronous context managers can be used in an :keyword:`async with` statement. 2995 2996.. method:: object.__aenter__(self) 2997 2998 Semantically similar to :meth:`__enter__`, the only 2999 difference being that it must return an *awaitable*. 3000 3001.. method:: object.__aexit__(self, exc_type, exc_value, traceback) 3002 3003 Semantically similar to :meth:`__exit__`, the only 3004 difference being that it must return an *awaitable*. 3005 3006An example of an asynchronous context manager class:: 3007 3008 class AsyncContextManager: 3009 async def __aenter__(self): 3010 await log('entering context') 3011 3012 async def __aexit__(self, exc_type, exc, tb): 3013 await log('exiting context') 3014 3015.. versionadded:: 3.5 3016 3017 3018.. rubric:: Footnotes 3019 3020.. [#] It *is* possible in some cases to change an object's type, under certain 3021 controlled conditions. It generally isn't a good idea though, since it can 3022 lead to some very strange behaviour if it is handled incorrectly. 3023 3024.. [#] The :meth:`~object.__hash__`, :meth:`~object.__iter__`, 3025 :meth:`~object.__reversed__`, and :meth:`~object.__contains__` methods have 3026 special handling for this; others 3027 will still raise a :exc:`TypeError`, but may do so by relying on 3028 the behavior that ``None`` is not callable. 3029 3030.. [#] "Does not support" here means that the class has no such method, or 3031 the method returns ``NotImplemented``. Do not set the method to 3032 ``None`` if you want to force fallback to the right operand's reflected 3033 method—that will instead have the opposite effect of explicitly 3034 *blocking* such fallback. 3035 3036.. [#] For operands of the same type, it is assumed that if the non-reflected 3037 method -- such as :meth:`~object.__add__` -- fails then the overall 3038 operation is not 3039 supported, which is why the reflected method is not called. 3040