Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you check whether a python method is bound or not?

Given a reference to a method, is there a way to check whether the method is bound to an object or not? Can you also access the instance that it's bound to?

like image 231
readonly Avatar asked Sep 10 '08 00:09

readonly


People also ask

Is Python a bound method?

A bound method is the one which is dependent on the instance of the class as the first argument. It passes the instance as the first argument which is used to access the variables and functions. In Python 3 and newer versions of python, all functions in the class are by default bound methods.

How do you check is method or is function in Python?

Use inspect. ismethod() . The documentation states: Return true if the object is a bound method written in Python.

What is bounded and unbounded in Python?

So, bound mean that underlying function is bound to some instance. unbound mean that it is still bound, but only to a class. Show activity on this post. A function object is a callable object created by a function definition.

Is bounded a class method in Python?

Methods in Python are like functions except that it is attached to an object. The methods are called on objects and it possibly make changes to that object. These methods can be Bound, Unbound or Static method.


1 Answers

def isbound(method):     return method.im_self is not None  def instance(bounded_method):     return bounded_method.im_self 

User-defined methods:

When a user-defined method object is created by retrieving a user-defined function object from a class, its im_self attribute is None and the method object is said to be unbound. When one is created by retrieving a user-defined function object from a class via one of its instances, its im_self attribute is the instance, and the method object is said to be bound. In either case, the new method's im_class attribute is the class from which the retrieval takes place, and its im_func attribute is the original function object.

In Python 2.6 and 3.0:

Instance method objects have new attributes for the object and function comprising the method; the new synonym for im_self is __self__, and im_func is also available as __func__. The old names are still supported in Python 2.6, but are gone in 3.0.

like image 99
jfs Avatar answered Sep 27 '22 22:09

jfs