Python中的@staticmethod,@classmethod,self,cls到底是什么意思?

您所在的位置:网站首页 python中的pass什么意思 Python中的@staticmethod,@classmethod,self,cls到底是什么意思?

Python中的@staticmethod,@classmethod,self,cls到底是什么意思?

2024-07-12 12:20| 来源: 网络整理| 查看: 265

普通类方法

在Python中,通常我们调用某个类的方式,首先要实例化一个对象才能调用该类的方法,比如:

# _*_ coding:utf_8 _*_ class People: def hello(self): print("hello, Everyone.") # 实例化一个对象 LiMing = People() LiMing.hello() """"""""""""""""""""" 输出:hello everyone """"""""""""""""""""" 使用@staticmethod 和@classmethod 方法修饰

当我们使用@staticmethod 和@classmethod 修饰后,则不需要实例化就可以直接调用类方法,下面举例说明:

# _*_ coding:utf_8 _*_ class People: def hello(self): print("hello, Everyone.") @staticmethod def say_morning(): print("good morning") @classmethod def say_afternoon(cls): print("good afternoon") # 实例化一个对象 LiMing = People() LiMing.hello() # 使用@staticmethod 或者使用@classmethod 不需要实例化就可以直接调用类方法 People.say_morning() People.say_afternoon() """"""""""""""""""" 这里是输出: hello, Everyone. good morning good afternoon """"""""""""""""""" self和cls以及@staticmethod 和@classmethod修饰的区别

使用@staticmethod 和@classmethod 都不需要实例化就可以直接调用类方法,但是两者还是有区别的,我们知道:

@staticmethod:不需要表示对象的self和自身类的clas参数,就和使用函数一样@classmethod:不需要self,但第一个参数需要是表示自身类的cls参数。 使用表示自身的cls参数之后,@classmethod装饰的函数就可以使用类本身的方法。下面我们举例进行说明: # _*_ coding:utf_8 _*_ class People: def hello(self): print("hello, Everyone.") @staticmethod def say_morning(): print("good morning") # print(People.hello()) 这里会报错! @classmethod def say_afternoon(cls): print("good afternoon") print(cls().hello()) # 实例化一个对象 LiMing = People() LiMing.hello() People.say_morning() People.say_afternoon() """"""""""""""""""" 这里是输出: hello, Everyone. good morning good afternoon hello, Everyone. """""""""""""""""""


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3