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