Python面向对象 | 静态方法 staticmethod
2019-11-16 01:59
2699 查看
静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。
譬如,我想定义一个关于时间操作的类,其中有一个获取当前时间的函数。使用了静态方法,然而方法体中并没使用(也不能使用)类或实例的属性(或方法)。若要获得当前时间的字符串时,并不一定需要实例化对象,此时对于静态方法而言,所在类更像是一种名称空间。其实,我们也可以在类外面写一个同样的函数来做这些事,但是这样做就打乱了逻辑关系,也会导致以后代码维护困难。
import time class TimeTest(object): def __init__(self, hour, minute, second): self.hour = hour self.minute = minute self.second = second # 各种方法省略 @staticmethod # 静态方法 def showTime(): return time.strftime("%H:%M:%S", time.localtime()) print(TimeTest.showTime()) t = TimeTest(2, 10, 10) print(t.showTime()) ''' 执行输出: 21:05:43 21:05:43 '''
看下面代码,一半是面向过程,一半是面向对象。对于完全面向对象编程而言,不允许出现面向过程的代码。完全面向对象编程。先登录后实例化。还没有一个具体的对象的时候 就要执行login方法,这样是不合理的。需要将login()变成静态方法。
def login():pass #username #password #身份 -- 实例化 class Student: def __init__(self,name):pass def login(self):pass
python为我们内置了函数staticmethod来把类中的函数定义成静态方法,它不需要实例化。所以,连self参数都没有。
class Student: def __init__(self,name):pass @staticmethod def login(): # login就是一个类中的静态方法.静态方法没有默认参数,就当成普通的函数使用即可 user = input('user :') if user == 'Tony': print('success') else: print('faild') Student.login()
总结:
-
当一个方法要使用对象的属性时就是用普通的方法;
-
当一个方法要使用类中的静态属性时,就是用类方法(classmethod);
-
当一个方法要既不使用对象的属性也不使用类中的静态属性时,就可以使用staticmethod静态方法;
相关文章推荐
- Python面向对象之静态属性、类方法与静态方法分析
- python之静态和类方法:staticmethod和classmethod内置函数
- python类中的静态方法@staticmethod
- Python 面向对象 —— 静态方法和类方法
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
- Python面向对象3:静态/动态字段、静态/动态方法、单例模式
- 【Python基础】Python面向对象 - 3 - 新类,静态方法,类方法,实例方法
- python 静态方法staticmethod和类方法classmethod
- python-静态方法staticmethod、类方法classmethod、属性方法property
- Python面向对象——静态属性,类方法,静态方法
- python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
- python-静态方法staticmethod、类方法classmethod、属性方法property
- python基础3--面向对象--类变量、实例变量、类方法、静态方法、实例方法
- python实例方法、静态方法、类方法
- 详解Python中的静态方法与类成员方法
- Python面向对象-属性方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- Python实例方法、类方法、静态方法的区别与作用详解
- JavaScript面向对象-静态方法-私有方法-公有方法-特权方法
- python 类方法 静态方法