详解python中静态方法staticmethod用法

 更新时间:2022年07月25日 14:48:59   作者:IT之一小佬  
本文主要介绍了python中静态方法staticmethod用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在开发的时候, 可以使用类对方法进行封装,如果某一个方法需要访问到对象的实例属性,可以把这个方法封装成一个实例方法。如果某一个方法不需要访问对象的实例属性,但是需要访问到类的类属性,这个时候就可以考虑把这个方法封装成一个类方法。一个实例方法, 一个类方法,这是两种方法类型,但是在开发中还有一种情况,如果要封装的某一个方法,既不需要访问到对象的实例属性,也不需要访问类的类属性,这个时候就可以考虑把这个方法封装成一个静态方法。

在开发中,如果类中的某个方法既不需要访问实例属性或者调用实例方法,同时也不需要访问类属性或者调用类方法,这个时候就可以把这个方法封装成静态方法。需要在def关键字上方增加一个静态方法的修饰符,@staticmethod。

语法格式如下:

@staticmethod
def 静态方法名():
    pass

在Python里面静态方法和我们平时写的函数def是一样的。唯一不同之处就是它可以存在于类中,不同实例化类也可以调用。

需要通过装饰器 @staticmethod 来进行修饰, 静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls ) 。

静态方法 也能够通过 实例对象 和 类对象 去访问。

当方法中 既不需要使用实例对象 ( 如实例对象,实例属性 ) , 也不需要使用类对象 ( 如类属性、类方法、创建实例等) 时,定义静态方法

取消不需要的参数传递 ,有利于 减少不必要的内存占存和性能消耗。

 示例代码:

class Dog(object):
    @staticmethod
    def info_print():
        print('这是⼀个狗类,⽤于创建狗实例....')
 
 
wangcai = Dog()
# 静态⽅法既可以使⽤对象访问⼜可以使⽤类访问
wangcai.info_print()
Dog.info_print()

运行结果:

在类中编写静态方法和类的普通方法

class Static(object):
    @staticmethod
    def test_static():
        print('I am staticmethod')
 
    def test_def(self):
        print('I am not staticmethod')
 
 
#  调用静态方法
Static.test_static()
 
#  实例化调用静态方法
obj = Static()
obj.test_static()

运行结果:

从上述代码和运行结果可以看出静态方法可以直接被调用,且不用加任何参数、self也不要。静态方法存在的意义其实就是让函数归类,紧耦合。

在类对象中定义的静态方法:

class MyClass(object):
    # 在类对象中定义的静态方法
    @staticmethod
    def tom(age, weight):  # 没有 self
        print(age, weight)
 
    @classmethod
    def get_info(cls):
        # 通过类对象调用类方法
        MyClass.tom(25, 66)
 
    def my_info(self):
        # 通过实例对象调用静态方法
        self.tom(26, 77)
 
 
# 通过类对象调用静态方法
MyClass.tom(23, 55)  # 23 55
 
# 实例化
mc = MyClass()
 
# 通过实例对象调用静态方法
mc.tom(24, 65)  # 24 65
 
# 通过类对象调用类方法
mc.get_info()  # 25 66
 
mc.my_info()  # 26 77

运行结果:

实例方法、类方法、静态方法综合例子

class MyClass(object):
    def __init__(self, name):
        self.name = name
 
    def get_info(self):  # 定义实例方法,有 self 参数
        print("实例方法")
 
    @classmethod
    def get_other(cls):  # 定义实例方法,有 cls 参数
        print("类方法")
 
    @staticmethod
    def get_my_class():  # 定义静态方法,无默认参数
        print("静态方法")
 
 
# 实例化
mc = MyClass("tom")
 
# 调用实例方法
mc.get_info()  # 实例方法
 
# 调用类方法,建议通过 类对象.类方法([实参]) 方法调用
MyClass.get_other()  # 类方法
 
# 调用静态方法,建议通过 类对象.类方法([实参]) 方法调用
MyClass.get_my_class()  # 静态方法

运行结果:

到此这篇关于详解python中静态方法staticmethod用法的文章就介绍到这了,更多相关python staticmethod内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python readline()和readlines()函数实现按行读取文件

    Python readline()和readlines()函数实现按行读取文件

    本文主要介绍了Python readline()和readlines()函数实现按行读取文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 深入浅析Python传值与传址

    深入浅析Python传值与传址

    这篇文章主要介绍了Python传值与传址的相关知识,包括传值与传址的区别介绍,需要的朋友可以参考下
    2018-07-07
  • 基于Django drf框架序列化视图

    基于Django drf框架序列化视图

    这篇文章主要为大家介绍了基于Django drf框架序列化视图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python目录和文件处理总结详解

    Python目录和文件处理总结详解

    这篇文章主要介绍了Python目录和文件处理总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python入门篇之字符串

    Python入门篇之字符串

    可能大多数人在学习C语言的时候,最先接触的数据类型就是字符串,因为大多教程都是以"Hello world"这个程序作为入门程序,这个程序中要打印的"Hello world"就是字符串。今天我们来了解一下Python中的字符串,看看它的用法。
    2014-10-10
  • Python编程中time模块的一些关键用法解析

    Python编程中time模块的一些关键用法解析

    这篇文章主要介绍了Python编程中time模块的一些关键用法解析,像mktime和localtime以及gmtime这些常用方法都有讲到,需要的朋友可以参考下
    2016-01-01
  • Python使用FTP上传文件的实现示例

    Python使用FTP上传文件的实现示例

    本文主要介绍了Python使用FTP上传文件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python中kivy库的使用教程详解

    Python中kivy库的使用教程详解

    Kivy是一个开源Python框架,用于构建具有创意和多点触控功能的用户界面(UI)应用程序,本文主要为大家介绍了一下Kivy的具体使用,需要的可以参考下
    2024-01-01
  • python 用 xlwings 库 生成图表的操作方法

    python 用 xlwings 库 生成图表的操作方法

    这篇文章主要介绍了python 用 xlwings 库 生成图表的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Python利用VideoCapture读取视频或摄像头并进行保存

    Python利用VideoCapture读取视频或摄像头并进行保存

    这篇文章主要为大家介绍一下OpenCV中cv2.VideoCapture函数的使用,并利用cv2.VideoCapture读取视频或摄像头以及进行保存帧图像或视频,感兴趣的小伙伴可以了解一下
    2022-07-07

最新评论