pythondef为什么要加self_Python为什么要self
Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。
Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
为何Python给self赋值而你不必给self赋值?
例子说明:
创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)
这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。
实例:
1 classPython:2 defselfDemo(self):3 print('Hello World')4 p =Python()5 p.selfDemo()
输出:Hello World
把p.selfDemo()带个参数如:p.selfDemo(p),得到同样的输出结果
如果把self去掉的话,
1 classPython:2 defselfDemo():3 print('Hello World')4 p =Python()5 p.selfDemo()
这样就报错了:TypeError: selfDemo() takes no arguments (1 given)
扩展
self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。
在Python3之后不知道将self隐了没?感觉在Python类里的方法都要带个self这样有点死板
pythondef为什么要加self_Python为什么要self相关推荐
- python属性前为何要加self_python什么时候加self,什么时候不加self
1.self是什么,一般都说指对象本身,这样说了没了用,说了后还是很难懂,因为这样说了后,仍然完全搞不清楚,什么时候变量前需要加self,什么时候不需要加self. 造成很多人,已经怕了self,不停 ...
- python类的参数加self_python类参数self使用示例
#coding:utf-8 """ __new__和__init__到底是怎么一回事,看下面的代码 如果类没有定义__new__方法,就从父类继承这个__new__方法. ...
- 如何在Java中获取临时文件路径
这是获取Java中临时文件路径的示例. 例 package com.mkyong.file;import java.io.File; import java.io.IOException;public ...
- doraemon的python 从计算机基础到面向对象的笔记(加面试题)
# python学习笔记## 第一章 计算机基础### 1.1 硬件 计算机基本的硬件:CPU/内存/主板/硬盘/网卡/显卡,硬件与硬件之间需要系统来统一协调工作### 1.2 操作系统 操作系统是用 ...
- kotlin Bean加载失败lateinit property has not been initialized
Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...
- ireport如何给static text加边框_html amp;amp; css 解决li浮动边框为2的问题
html && css 解决li浮动边框为2的问题 思路 问题:首先,li 浮动后,添加边框,则 中间 li 的边框会形成 1+1=2 的效果,1px的边框会变成2px.(例:分页模块 ...
- 加解密基础——(对称加密、非对称加密和混合加密)
本文对之前学习过的加解密相关知识做一简单总结,以备后用. 1. 基本概念 加密算法 通常是复杂的数学公式,这些公式确定如何将明文转化为密文的过程和规则. 密钥 是一串被加入到算法中的随机比特. 待续 ...
- Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)
字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...
- Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存
Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo apt-get install python-opencv 或者使用 p ...
最新文章
- 阅读豆丁网----基于模型的混合多目标算法的研究
- 服务器返回的常见的http状态码
- 长尾关键词优化也要讲技巧
- allegro差分信号走线_浅谈硬件设计中的一些思路和方法(5)—信号系统,又学到了...
- 为什么说中国式报表特殊-3、报表格式
- Open WebRTC Toolkit实时视频分析系统
- 力扣 两数相加 指针操作注意事项
- CentOS6.5升级内核
- C++基础学习笔记:第一章、第二章
- 石油化工行业的MES系统解决方案
- Axure RP 8--成绩管理页面原型图
- 利用python和GUI实现照片或证件照迅速更换背景底色,还可以自定义背景底色
- 微信小程序 - excel通过云函数导入云数据库
- proxmox PVE 安装 黑群晖
- python跑一千万次循环要多久_进行一亿次MD5需要耗时多久?
- 打造不死的asp木马
- 社交网络分析——SNAP
- 从零开始的java连接sqlserver数据库教程
- 微商城分销系统:微商运营管理系统搭建介绍
- 基于STM32的ADC电压采集(DMA传输)