深入解析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转换摩斯密码示例
Feb 16 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
Python实现删除文件但保留指定文件
Jun 21 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
python 计算文件的md5值实例
Jan 13 Python
django初始化数据库的实例
May 27 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
Python数据可视化:泊松分布详解
Dec 07 Python
Python作用域和名称空间的详细介绍
Apr 13 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python3运算符常见用法分析
2020/02/14 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
2015年环卫工作总结
2015/04/28 职场文书
解约证明模板
2015/06/19 职场文书
校友会致辞
2015/07/30 职场文书
学雷锋感言
2015/08/03 职场文书
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers