深入解析python中的实例方法、类方法和静态方法


Posted in Python onMarch 11, 2019

1、实例方法/对象方法

实例方法或者叫对象方法,指的是我们在类中定义的普通方法。
只有实例化对象之后才可以使用的方法,该方法的第一个形参接收的一定是对象本身

深入解析python中的实例方法、类方法和静态方法

2、静态方法

(1).格式:在方法上面添加 @staticmethod
(2).参数:静态方法可以有参数也可以无参数
(3).应用场景:一般用于和类对象以及实例对象无关的代码。
(4).使用方式: 类名.类方法名(或者对象名.类方法名)。

定义一个静态方法

class Game:

  @staticmethod
  def menu():
    print('------')
    print('开始[1]')
    print('暂停[2]')
    print('退出[3]')


Game.menu()

3、类方法

无需实例化,可以通过类直接调用的方法,但是方法的第一个参数接收的一定是类本身
(1).在方法上面添加@classmethod
(2).方法的参数为 cls 也可以是其他名称,但是一般默认为cls
(3).cls 指向 类对象
(5).应用场景:当一个方法中只涉及到静态属性的时候可以使用类方法(类方法用来修改类属性)。
(5).使用 可以是 对象名.类方法名。或者是 类名.类方法名

class Person:
  type = '人类'

  @classmethod
  def test(cls):
    print(cls.type)


Person.test()

举例:使用类方法对商品进行统一打折

class Goods:
  __discount = 1

  def __init__(self, name, price):
    self.name = name
    self.price = price

  @classmethod
  def change_discount(cls, new_discount):
    cls.__discount = new_discount

  @property
  def finally_price(self):
    return self.price * self.__discount


banana = Goods('香蕉', 10)
apple = Goods('苹果', 16)
Goods.change_discount(0.8)
print(banana.finally_price)
print(apple.finally_price)

Goods.change_discount(0.5)
print(banana.finally_price)
print(apple.finally_price)

输出为:

8.0
12.8
5.0
8.0

以上所述是小编给大家介绍的python中的实例方法、类方法和静态方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
使用Python写个小监控
Jan 27 Python
浅谈Python 的枚举 Enum
Jun 12 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
浅析python内置模块collections
Nov 15 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
编写python代码实现简单抽奖器
Oct 20 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
python通过新建环境安装tfx的问题
May 20 Python
Python 函数返回值的示例代码
Mar 11 #Python
浅谈Python批处理文件夹中的txt文件
Mar 11 #Python
Python数据报表之Excel操作模块用法分析
Mar 11 #Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 #Python
Python实现截取PDF文件中的几页代码实例
Mar 11 #Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 #Python
Python写一个基于MD5的文件监听程序
Mar 11 #Python
You might like
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
CSS常用网站布局实例
2008/04/03 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python3 能振兴 Python的原因分析
2014/11/28 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
爱普生美国官网:Epson美国
2018/11/05 全球购物
专业实习自我鉴定
2013/10/29 职场文书
失职检讨书大全
2015/01/26 职场文书
紧急通知
2015/04/17 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Python Django搭建文件下载服务器的实现
2021/05/10 Python