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