Home  >  Article  >  Backend Development  >  What are the Differences between Bound, Unbound, and Static Methods in Python?

What are the Differences between Bound, Unbound, and Static Methods in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-11-15 10:19:02827browse

What are the Differences between Bound, Unbound, and Static Methods in Python?

Class Method Differences in Python: Bound, Unbound, and Static

In Python, the distinction between bound, unbound, and static methods is crucial for effective class design.

Bound and Unbound Methods

Unlike most other object-oriented languages, Python class methods are not static by default. When a class instance calls a member function, it is translated into a call to the unbound method with the instance as the first argument. For instance, consider the following code:

class Test(object):
  def method_one(self):
    print "Called method_one"

Calling method_one on an instance a_test will result in:

a_test.method_one()
=> Test.method_one(a_test)

Static Methods

To define a static method that is invoked on the class rather than an instance, use the @staticmethod decorator. This decorator instructs the metaclass to create an unbound method. For example:

class Test(object):
    @staticmethod
    def method_two():
        print "Called method_two"

Now, both the instance and the class can invoke method_two:

a_test = Test()
a_test.method_one()
a_test.method_two()
Test.method_two()

Calling method_two without an instance will not raise an error, unlike method_one, which expects an instance to be bound to it.

The above is the detailed content of What are the Differences between Bound, Unbound, and Static Methods in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn