Python 静态方法

Python 静态方法或 @staticmethod 无需创建实例或对象即可调用。尽管 Python 静态方法属于一个类,但您可以直接通过静态方法名称调用它。如果您想要一个不需要任何类变量或实例变量即可操作的函数,那么您可以将其创建为静态方法。

例如,如果您想打印一条欢迎消息,那么您可以将其创建为静态方法,因为它不会改变。或者它不需要任何类变量来显示该消息。我们可以使用 @staticmethod 装饰器或 staticmethod() 函数在 Python 中创建静态方法。尽管我们不推荐第二种选择,但为了您的理解,我们展示了可能性。

在本节中,我们解释了如何在这种编程语言中创建静态方法并调用静态方法。在大多数示例中,我们将静态方法与非静态方法结合使用。一开始可能会让您感到困惑,但这可以帮助您区分静态和非静态方法。

Python 静态方法示例

您可以将静态方法和非静态方法都写入一个类中。让我使用 @staticmethod 装饰器创建一个非静态的 func_message() 和一个静态方法 func_msg()。

提示:请参阅函数文章,以创建用于静态方法的Python类。

class Employee:
     
    def func_message(self):
        print('Welcome to Programming')
 
    @staticmethod
    def func_msg():
        print("Welcome to Tutorial Gateway")

要从类中显示某些内容,您需要从该类创建对象或实例。

在 Python 中调用 @staticmethod

此示例演示如何调用静态方法或 @staticmethod 和非静态方法。正如我们前面所说,我们不需要创建实例来调用静态方法。

如果您查看示例,Employee.func_msg() 表示类名.静态方法名。它会自动调用 employee 类中的 func_msg 函数。

接下来,我们创建了 Employee 类的实例来调用另一个函数,它是一个非静态函数。

class Employee:
     
    def func_message(self):
        print('Welcome to Programming')
 

    @staticmethod
    def func_msg():
        print("Welcome to Tutorial Gateway")
 
Employee.func_msg()
 
emp = Employee()
emp.func_message()
Welcome to Tutorial Gateway
Welcome to Programming

静态方法方法 2

在此示例中,我们使用 staticmethod() 函数创建一个静态方法。在类中,我们首先创建了两个常规函数。接下来,我们使用以下语句将常规函数转换为静态方法。

Employee.func_addition = staticmethod (Employee. func_addition)。它表示 class_name. method_name = staticmethod (class_name. method_name)

class Employee:
     
    def func_message(self):
        print('Welcome to The World')
 
    def func_addition(a, b):
        return a + b
     
Employee.func_addition = staticmethod(Employee.func_addition)
print('Total = ', Employee.func_addition(25, 50))
 
emp = Employee()
emp.func_message()
Total =  75
Welcome to the World

这是使用 staticmethod() 函数创建静态方法的另一个示例。在这里,我们创建了两个 func_addition() 和 func_multiply()

class Employee:
     
    def func_message(self):
        print('Welcome to this World')
 
    def func_addition(a, b):
        return a + b
 
    def func_multiply(a, b):
        return a * b
 
emp = Employee()
emp.func_message()
 
Employee.func_addition = staticmethod(Employee.func_addition)
print('Total = ', Employee.func_addition(25, 50))
 
Employee.func_multiply = staticmethod(Employee.func_multiply)
print('Multiplication = ', Employee.func_multiply(25, 50))
Welcome to this World
Total =  75
Multiplication =  1250

带参数的 @staticmethod 示例

在 Python 中,您无需使用 self 或 cls 属性来创建静态方法。像函数一样,您可以创建它并根据您的要求添加参数。

在此示例中,我们创建了两个。func_msg() 函数打印一条欢迎消息。split_string (message) 函数接受一个字符串并按逗号分隔符拆分该字符串。我建议您参考字符串拆分文章。

class Employee:
     
    def func_message(self):
        print('Welcome to Programming')
 
    @staticmethod
    def func_msg():
        print("Welcome to Tutorial Gateway")
 
    @staticmethod
    def split_string(message):
        return message.split(",")
 
Employee.func_msg()
 
countries = 'India, China, Japan, USA, UK, Australia, Canada'
 
print(Employee.split_string(countries))

带参数的 @staticmethod 定义输出

Welcome to Tutorial Gateway
['India', ' China', ' Japan', ' USA', ' UK', ' Australia', ' Canada']

这是带参数的静态方法的另一个示例。在此示例中,我们使用函数使用逗号拆分消息,并使用 replace 函数将逗号替换为下划线。我建议您参考字符串替换文章。

class Employee:
     
    def func_message(self):
        print('Welcome to Programming')
 
    @staticmethod
    def func_msg():
        print("Welcome to Tutorial Gateway")
 
    @staticmethod
    def split_string(message):
        return message.split(",")
 
    @staticmethod
    def replace_string(message):
        return message.replace(",", "_")
 
Employee.func_msg()
 
countries = 'India, China, Japan, USA, UK, Australia, Canada'
 
print(Employee.split_string(countries))
print(Employee.replace_string(countries))

带参数的 @staticmethod 输出

Welcome to Tutorial Gateway
['India', ' China', ' Japan', ' USA', ' UK', ' Australia', ' Canada']
India_ China_ Japan_ USA_ UK_ Australia_ Canada

算术运算

在这里,我们创建了三个静态方法来执行加法、减法和乘法。

class Employee:
     
    def func_message(self):
        print('Welcome to Programming Language')

    @staticmethod
    def func_addition(a, b):
        return a + b
 
    @staticmethod
    def func_multiply(a, b):
        return a * b
 
    @staticmethod
    def func_subtract(a, b):
        return a - b
 
print(Employee.func_addition(10, 20))
print(Employee.func_addition(15, 28))
 
print(Employee.func_multiply(2, 3))
print(Employee.func_multiply(5, 7))
 
print(Employee.func_subtract(20, 75))
print(Employee.func_subtract(1600, 249))
Static Method @staticmethod Example