python - 静态方法、类方法、普通方法

区别

静态方法、类方法、普通方法的区别:

  • 静态方法:用@staticmethod装饰的,不带self参数的方法,叫做静态方法。类的静态方法可以没有参数,可以直接使用类名调用。也可以使用对象调用。
  • 类方法:   用@classmethod装饰的,默认带cls参数的方法。可以被类和对象调用。
  • 普通方法:默认带self参数。只能被对象调用。
class Test_1:
    @staticmethod
    def fun1():
        print('静态方法')

    @classmethod
    def fun2(cls):
        print('类方法')

    def fun3(self):
        print('普通方法')


Test_1.fun1()
Test_1.fun2()

obj = Test_1()
obj.fun1()
obj.fun2()
obj.fun3()

 

 

静态方法

静态方法是类中的函数,不需要实例。

静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中。事实上,在python引入静态方法之前,通常是在全局名称空间中创建函数。

例如,定义一个关于时间操作的类,其中有一个获得当前时间的函数,就可以使用静态函数。将获得时间的函数与实例解绑,想获得当前时间时,并不一定需要实例化对象,此时更像是一种名称空间。

import time


class Test_1:
    def __init__(self, hour, minutes, seconds):
        self.hour = hour
        self.minutes = minutes
        self.seconds = seconds

    @staticmethod
    def func1():
        print(time.strftime('%H:%M:%S'))


Test_1.func1()           # 16:43:17
Test_1(1,1,1).func1()    # 16:43:17,与实例无关

我们可以在类外面写一个函数来做这些,但这样就扩散了类代码的关系到类定义外面,会导致以后代码维护困难

 

posted @ 2022-03-31 15:36  小虫虫大虫虫  阅读(558)  评论(0编辑  收藏  举报