详解Python self 参数


Posted in Python onAugust 30, 2019

1、概述

1.1 场景

我们在使用 Python 中的 方法 method 时,经常会看到 参数中带有 self,但是我们也没对这个参数进行赋值,那么这个参数到底是啥意思呢?

2、知识点

2.1 成员函数(m) 和 普通方法(f)

Python 中的 "类方法" 必须有一个额外的 第一个参数名称(名称任意,不过推荐 self),而 "普通方法"则不需要。

m、f、c 都是代码自动提示时的 左边字母(method、function、class)

# -*- coding: utf-8 -*-
class Test(object):
 def add(self, a, b):
  # 输出 a + b
  print(a + b)
 def show(self):
  # 输出 "Hello World"
  print("Hello World")

def display(a, b):
 # 输出 a * b
 print(a * b)

if __name__ == '__main__':
 test = Test()
 test.add(1, 2)
 test.show()
 display(1, 2)

2.2 类函数,静态函数

类函数一般用参数 cls

静态函数无法使用 self 或 cls

class Test(object):
 def __init__(self):
  print('我是构造函数。。。。')
 def foo(self, str):
  print(str)
 @classmethod
 def class_foo(cls, str):
  print(str)
 @staticmethod
 def static_foo(str):
  print(str)

def show(str):
 print(str)

if __name__ == '__main__':
 test = Test()
 test.foo("成员函数")
 Test.class_foo("类函数")
 Test.static_foo("静态函数")
 show("普通方法")

输出结果:

我是构造函数。。。。
成员函数
类函数
静态函数
普通方法

总结

以上所述是小编给大家介绍的Python self 参数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
python传递参数方式小结
Apr 17 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
django模板加载静态文件的方法步骤
Mar 01 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python os.fork() 循环输出方法
Aug 08 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
Python pyecharts绘制条形图详解
Apr 02 Python
Python 70行代码实现简单算式计算器解析
Aug 30 #Python
Python类中方法getitem和getattr详解
Aug 30 #Python
Python paramiko模块使用解析(实现ssh)
Aug 30 #Python
django中上传图片分页三级联动效果的实现代码
Aug 30 #Python
python实现生成Word、docx文件的方法分析
Aug 30 #Python
python解析yaml文件过程详解
Aug 30 #Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 #Python
You might like
PHP.MVC的模板标签系统(四)
2006/09/05 PHP
在PHP中使用灵巧的体系结构
2006/10/09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
微信分享调用jssdk实例
2017/06/08 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
Python的一些用法分享
2012/10/07 Python
Python Socket编程入门教程
2014/07/11 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
用Python shell简化开发
2018/08/08 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
shell程序中如何注释
2012/02/17 面试题
小学生开学第一课活动方案
2014/03/27 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
Python中22个万用公式的小结
2021/07/21 Python
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers