Home >Backend Development >Python Tutorial >What are the Differences Between Bound, Unbound, and Static Class Methods in Python?
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 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")
When invoked via an instance, bound methods behave as expected:
a_test = Test() a_test.method_one() # Output: Called method_one
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")
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)
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")
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
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!