New GitHub issue #96154 from mkaizad:<br>

<hr>

<pre>
I've come across two definitions of 'method' in the docs:

1. In the glossary:
 
   > **method**
A function which is defined inside a class body. 

2. In the last paragraph of 4.7 Defining Functions:

   > A method is a function that ‘belongs’ to an object and is named obj.methodname, where obj is some object (this may be an expression), and methodname is the name of a method that is defined by the object’s type.

**Could someone please clarify if these two definitions are equivalent?** 

Definition 2 seems to say that a method is function that is bound to a *particular instance* of the class in which that function is defined. On the other hand, definition 1 seems to apply the term to functions defined in the *class body* (with no requirement that they be bound to an instance of that class).

Example: 

```python
class Foo(object):
    def hello(self):
        print('Hello')

f1 = Foo()

print(type(f1.hello))     # <class 'method'>
print(type(Foo.hello))    # <class 'function'>
```

Definition 2) seems to be more consistent with what I see in the console, i.e. `f1.hello` is of type `method` because it belongs to the instance `f1` and `Foo.hello` is of type `function` because it is not bound to any particular instance.

But definition 1) makes it seem like both,  `f1.hello` and `Foo.hello`, should be of type `method` since `hello` is defined in `Foo`'s body.
</pre>

<hr>

<a href="https://github.com/python/cpython/issues/96154">View on GitHub</a>
<p>Labels: docs</p>
<p>Assignee: </p>