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