diff options
author | Carl Friedrich Bolz-Tereick <cfbolz@gmx.de> | 2020-01-21 00:41:17 (GMT) |
---|---|---|
committer | Inada Naoki <songofacandy@gmail.com> | 2020-01-21 00:41:16 (GMT) |
commit | 8698b34b68065b80bd9bd18b8decb425208fa386 (patch) | |
tree | 853646f4535b6b6064519e74886bed9eeab86dca /Doc/library/dis.rst | |
parent | 8d57a4182f0aa68e16d66dea31ba59e732612b4f (diff) | |
download | cpython-8698b34b68065b80bd9bd18b8decb425208fa386.zip cpython-8698b34b68065b80bd9bd18b8decb425208fa386.tar.gz cpython-8698b34b68065b80bd9bd18b8decb425208fa386.tar.bz2 |
improve the documentation of the LOAD_METHOD and CALL_METHOD (GH-18079)
Diffstat (limited to 'Doc/library/dis.rst')
-rw-r--r-- | Doc/library/dis.rst | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index d3124f9..aef5c7e 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1140,22 +1140,24 @@ All of the following opcodes use their arguments. .. opcode:: LOAD_METHOD (namei) - Loads a method named ``co_names[namei]`` from TOS object. TOS is popped and - method and TOS are pushed when interpreter can call unbound method directly. - TOS will be used as the first argument (``self``) by :opcode:`CALL_METHOD`. - Otherwise, ``NULL`` and method is pushed (method is bound method or - something else). + Loads a method named ``co_names[namei]`` from the TOS object. TOS is popped. + This bytecode distinguishes two cases: if TOS has a method with the correct + name, the bytecode pushes the unbound method and TOS. TOS will be used as + the first argument (``self``) by :opcode:`CALL_METHOD` when calling the + unbound method. Otherwise, ``NULL`` and the object return by the attribute + lookup are pushed. .. versionadded:: 3.7 .. opcode:: CALL_METHOD (argc) - Calls a method. *argc* is number of positional arguments. + Calls a method. *argc* is the number of positional arguments. Keyword arguments are not supported. This opcode is designed to be used with :opcode:`LOAD_METHOD`. Positional arguments are on top of the stack. - Below them, two items described in :opcode:`LOAD_METHOD` on the stack. - All of them are popped and return value is pushed. + Below them, the two items described in :opcode:`LOAD_METHOD` are on the + stack (either ``self`` and an unbound method object or ``NULL`` and an + arbitrary callable). All of them are popped and the return value is pushed. .. versionadded:: 3.7 |