Home > Backend Development > Python Tutorial > What are the Differences Between Bound, Unbound, and Static Class Methods in Python?

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

DDD
Release: 2024-11-12 10:16:02
Original
717 people have browsed it

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

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

In Python, class methods can be categorized into three types: bound, unbound, and static. Understanding the distinctions between these types is crucial for effective class design and object interaction.

Bound Methods

Bound methods are associated with a specific instance of a class. When called, the first argument is automatically bound to the calling instance. This allows access to instance-specific attributes and methods within the method's execution. In the example provided, method_one is a bound method:

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

When invoked via an instance, bound methods behave as expected:

a_test = Test()
a_test.method_one()  # Output: Called method_one
Copy after login

Unbound Methods

Unbound methods are not associated with any specific instance of a class. When called, the first argument is not automatically bound to an instance, and they cannot access instance-specific data. In the example, method_two is an unbound method:

class Test(object):
    def method_two():
        print("Called method_two")
Copy after login

Attempts to invoke unbound methods via instances result in a TypeError since no instance is provided:

a_test = Test()
a_test.method_two()  # Error: TypeError: method_two() takes no arguments (1 given)
Copy after login

Static Methods

Static methods are not associated with any instance or class and behave like regular functions. They can be accessed directly from the class or using instances, but they have no inherent access to instance-specific data. Static methods are typically used for utility functions or class-level operations:

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

Static methods can be invoked both on instances and the class itself:

a_test = Test()
a_test.method_two()  # Output: Called method_two
Test.method_two()  # Output: Called method_two
Copy after login

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

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template