普通类方法

在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.

"""""""""""""""""""

python classmethod 的cls_Python中的@staticmethod,@classmethod,self,cls到底是什么意思?...相关推荐

  1. Python中的 @staticmethod@classmethod方法

    Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的类方法,也可以是 @staticmethod 装饰的静态方法,用的最多的还是不带装饰器的实例方法,如果把这几个方法放一 ...

  2. python在会计工作中的应用-浅谈各行各业到底该如何应用python?

    文|一本正经胡说八道的猫 一.[会计.财务] 会计财务都离不开和数据打交道,而且每天有大量重复性工作,所以学习Python最大的用处是:释放大部分人力对数据的处理,解放重复劳动性工作. 另外也在评估预 ...

  3. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数

    python 中的static-method (静态函数), classmethod(类函数 ), 成员函数 简介 类似Java.CPP中的类,可以定义static method.class meth ...

  4. python内置装饰器property_python之内置装饰器(property/staticmethod/classmethod)

    python内置了property.staticmethod.classmethod三个装饰器,有时候我们也会用到,这里简单说明下 1.property 作用:顾名思义把函数装饰成属性 一般我们调用类 ...

  5. python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇

    1.这篇文章写的很好,理清了staticmethod和classmethod 2.万物皆对象,需要理清什么是对象?对象和类之间的关系.类和object之间的关系. 3.staticmethod就像是一 ...

  6. python的staticmethod,classmethod和装饰器以及闭包

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/ibelieve8013/article ...

  7. python nums函数_Python中的内置函数

    Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...

  8. Python 3.7.1 中 namedtuple 具名元组基本用法详解

    Python 3.7.1 中 namedtuple 具名元组基本用法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details/84645251 文 ...

  9. 使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图

    使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图 1. EoN是什么 2. 安装 3. 效果图 4. 源代码 4.1 源码 4.2 源码 参考 写这篇博客源于博友的提问 ...

最新文章

  1. js数组如何按照固定的下标去重_js数组去重的三种常用方法总结
  2. java中动态代理实现机制
  3. SpringBatch tasklet实现和用法(十)
  4. input type=submit 和button的区别及表单提交
  5. python如何循环使用input_python基础知识input到while循环
  6. VMware 虚拟上网的的三种模式 ——bridged、host-only、NAT 模式
  7. red hat linux综合实验报告,实验一 Red Hat Linux 9.doc
  8. 初学者,学习vue应该从何下手?
  9. HTTPS是对称加密还是非对称加密?
  10. RedHat 救援模式下排错
  11. R语言学习笔记(三)
  12. 【原创】C语言之父和Linux之父谁更伟大?
  13. 小波分解与小波包分解的区别
  14. 【电子电路】RS485收发器两种典型电路
  15. Linux常用基本命令详解(三)
  16. 易语言群控雷电_安卓群控系统雷电模拟器安卓多开模拟器多开群控系统企业自动化的营销系统软件-资源下载随便下源码网...
  17. c语言编写用户注册程序,如何用c实现登录和注册的程序?
  18. Unity实现Angry Bird弹弓发射功能
  19. Bootstrap栅格参数
  20. Jenkins部署spring boot项目

热门文章

  1. DELPHI 7设计的通讯聊天界面仿QQ聊天(参考)
  2. java session串号,IHS session串号问题求助
  3. excel 公式 单引号 concat_这18则经典公式,帮你全面解决各种日期计算难题
  4. 汇川660C系列CANOPEN 伺服通过HT3S-PNS-COP网关实现数据传输到西门子ProfiNet (S7-300/400/1200/1500)PLC
  5. 世界坐标系与像素坐标系的点互相转换
  6. CentOS8查看本机IP
  7. 6w字教程入门Docker
  8. SOEM 源码解析 ecx_init_context
  9. wx号怎么强制解绑手机号
  10. pandas中的字符串处理函数