Python中的静态方法是什么
相比于实例方法,Python中的静态方法不与对象绑定。换句话说,静态方法不能访问或更改对象的状态。此外,Python不会自动为静态方法提供self或cls参数。因此,静态方法不能访问或更改类的状态。
Python中的静态方法
实际上,您可以使用静态方法在类中定义具有一些逻辑关系的实用方法或函数组。
这与在类中定义常规函数来定义静态方法非常相似。
示例
使用 @staticmethod 装饰器来定义静态方法−
class name_of_class:
@staticmethod
def name_of_static_method(parameters_list):
pass
print ('static method defined')
输出
上述代码的输出如下所示-
static method defined
调用静态方法
无需创建一个类的实例,可以直接从类中调用静态方法。只有静态变量可以被静态方法访问,实例变量不可访问。
语法
调用静态方法的语法如下:
Name_of_class.static_method_name()
示例
以下是使用静态方法调用的示例
Name_of_class.static_method_name() 并使用类的对象-
class Animal:
@staticmethod
def test(a):
print('static method', a)
# calling a static method
Animal.test(12)
# calling using object
anm = Animal()
anm.test(12)
输出
以下是上述代码的输出−
static method 12
static method 12
示例
从另一个方法调用静态方法
现在我们来看看从同一个类的另一个静态方法调用静态方法的过程。在这里,我们将区分静态方法和类方法:
class Animal :
@staticmethod
def first_static_method():
print('first_static_method')
@staticmethod
def second_static_method() :
Animal.first_static_method()
@classmethod
def class_method(cls) :
cls.second_static_method()
# calling the class method
Animal.class_method()
输出
以下是上面代码的输出结果 –
first_static_method
使用@staticmethod装饰器创建静态方法
在方法定义之前加上 @staticmethod 装饰器可以将方法声明为静态方法。Python包含一个内置的函数装饰器,称为 @staticmethod ,可用于声明一个方法为静态方法。它是一个在函数定义后进行评估的表达式。
示例
静态方法是一种特殊类型的方法。有时你会编写与类相关但不使用实际对象的代码。它是一个实用方法,可以在没有对象(self参数)的情况下运行。由于它是静态的,我们以这种方式声明它。此外,我们可以从另一个类方法中调用它。
作为示例,让我们开发一个名为 information() 的静态方法,它接受一个“kingdom”并返回需要满足该王国的所有要求的列表。
class Animal(object):
def __init__(self, name, species, kingdom):
self.name = name
self.species = species
self.kingdom = kingdom
@staticmethod
def information(kingdom):
if kingdom == 'Animalia':
info = ['lion', 'Pantheria', 'Animalia']
else:
info = ['lion']
return info
# the instance method
def call(self):
# calling the static method from the instance method
info = self.information(self.kingdom)
for i in info:
print('Information collected', i)
anm = Animal('Lion','Pantheria', 'Animalia')
anm.call()
输出
以下是上述代码的输出 –
Information collected lion
Information collected Pantheria
Information collected Animalia
staticmethod()函数
一些程序可能会通过调用静态方法 staticmethod() 作为函数而不是装饰器的方式来定义静态方法。
如果您需要支持以前的Python版本(2.2和2.3),那么您应该只使用 staticmethod() 函数来定义静态方法。在其他所有情况下,建议使用 ** @staticmethod** 装饰器。
语法
以下是 staticmethod() 函数的语法-
staticmethod(function)
其中,
你想要将其更改为静态方法的方法被称为函数。它返回被转换的静态方法。
例子
以下是 staticmethod() 函数的一个示例 −
class Animal:
def test(a):
print('static method', a)
# converting to the static method
Animal.test = staticmethod(Animal.test)
# calling the static method
Animal.test(5)
输出结果
以下是上述代码的输出结果−
static method 5
注意 − 当您需要从类主体引用函数但不希望自动转换为实例方法时,使用 staticmethod() 方法会很有用。