目录
1、python中类的方法类别
python中类的方法有三种,分别为:
- 类方法,通过装饰器@calssmethod进行修饰。
- 静态方法,通过装饰器@staticmethod进行修饰。
- 实例方法,属于方法类型的函数。
2、各个方法之间的功能差异
为什么要分为三种不同的方法呢?他们之间有什么区别和差异呢?首先这三种方法的可以获取类的属性和变量范围不同,具体区别如下:
- 类方法:不能获取构造函数定义的变量,可以获取类的属性。
- 静态方法:不能获取构造函数定义的变量,也不可以获取类的属性。
- 实例方法:既可以获取构造函数定义的变量,也可以获取类的属性值。
3、各个方法的调用格式
除了三种方法可以获取的类的属性存在差异,具体在方法本身被调用的方式上也有所差异,具体如下:
- 类方法:有两种调用方式,a.类名.类方法名 b.实例化调用
- 静态方法:有两种调用方式,a.类名.静态方法名 b.实例化调用
- 实例方法:见名知意,也许命名就是告诉大家,它只能通过实例化进行调用,事实也是。
4、使用举例
基于以上理解,举个例子:
class FunctionTest:
fun = "test"
def __init__(self):
self.__name = "function"
self.__age = 2
@classmethod
def execute_class(cls):
logging.info("this is class method!")
@staticmethod
def execute_static(x):
logging.info("this is static method!")
logging.info(f"{x} is a num.")
def execute_normal(self):
logging.info("This is normal method!")
if __name__ == '__main__':
# 实例化调用
FT = FunctionTest()
# 只能通过实例化调用
FT.execute_normal()
# 实例化调用
FT.execute_static(7)
FT.execute_class()
# 类.方法名 调用
FunctionTest.execute_static(9)
FunctionTest.execute_class()
执行结果如下:
2022-26-04 17:15:45:INFO:This is normal method!
2022-26-04 17:15:45:INFO:this is static method!
2022-26-04 17:15:45:INFO:7 is a num.
2022-26-04 17:15:45:INFO:this is class method!
2022-26-04 17:15:45:INFO:this is static method!
2022-26-04 17:15:45:INFO:9 is a num.
2022-26-04 17:15:45:INFO:this is class method!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37826.html