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相关推荐

  1. python属性前为何要加self_python什么时候加self,什么时候不加self

    1.self是什么,一般都说指对象本身,这样说了没了用,说了后还是很难懂,因为这样说了后,仍然完全搞不清楚,什么时候变量前需要加self,什么时候不需要加self. 造成很多人,已经怕了self,不停 ...

  2. python类的参数加self_python类参数self使用示例

    #coding:utf-8 """ __new__和__init__到底是怎么一回事,看下面的代码 如果类没有定义__new__方法,就从父类继承这个__new__方法. ...

  3. 如何在Java中获取临时文件路径

    这是获取Java中临时文件路径的示例. 例 package com.mkyong.file;import java.io.File; import java.io.IOException;public ...

  4. doraemon的python 从计算机基础到面向对象的笔记(加面试题)

    # python学习笔记## 第一章 计算机基础### 1.1 硬件 计算机基本的硬件:CPU/内存/主板/硬盘/网卡/显卡,硬件与硬件之间需要系统来统一协调工作### 1.2 操作系统 操作系统是用 ...

  5. kotlin Bean加载失败lateinit property has not been initialized

    Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  6. ireport如何给static text加边框_html amp;amp; css 解决li浮动边框为2的问题

    html && css 解决li浮动边框为2的问题 思路 问题:首先,li 浮动后,添加边框,则 中间 li 的边框会形成 1+1=2 的效果,1px的边框会变成2px.(例:分页模块 ...

  7. 加解密基础——(对称加密、非对称加密和混合加密)

    本文对之前学习过的加解密相关知识做一简单总结,以备后用. 1. 基本概念 加密算法 通常是复杂的数学公式,这些公式确定如何将明文转化为密文的过程和规则. 密钥 是一串被加入到算法中的随机比特. 待续 ...

  8. Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)

    字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...

  9. Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存

    Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo apt-get install python-opencv 或者使用 p ...

最新文章

  1. 阅读豆丁网----基于模型的混合多目标算法的研究
  2. 服务器返回的常见的http状态码
  3. 长尾关键词优化也要讲技巧
  4. allegro差分信号走线_浅谈硬件设计中的一些思路和方法(5)—信号系统,又学到了...
  5. 为什么说中国式报表特殊-3、报表格式
  6. Open WebRTC Toolkit实时视频分析系统
  7. 力扣 两数相加 指针操作注意事项
  8. CentOS6.5升级内核
  9. C++基础学习笔记:第一章、第二章
  10. 石油化工行业的MES系统解决方案
  11. Axure RP 8--成绩管理页面原型图
  12. 利用python和GUI实现照片或证件照迅速更换背景底色,还可以自定义背景底色
  13. 微信小程序 - excel通过云函数导入云数据库
  14. proxmox PVE 安装 黑群晖
  15. python跑一千万次循环要多久_进行一亿次MD5需要耗时多久?
  16. 打造不死的asp木马
  17. 社交网络分析——SNAP
  18. 从零开始的java连接sqlserver数据库教程
  19. 微商城分销系统:微商运营管理系统搭建介绍
  20. 基于STM32的ADC电压采集(DMA传输)

热门文章

  1. selenium 知网爪巴虫
  2. 20230217 Python操作word
  3. 我的Spring学习记录(二)
  4. python快速写手机网页_利用micropython快速实现Badusb及手机摇控扩展
  5. PDM软件介绍(二)
  6. es6 中的箭头符号
  7. 谈谈端到端测试(End-to-End Testing)
  8. 如何实现对数ln运算?
  9. 荣膺中小企业精选产品11项大奖!华为赢在起跑线
  10. Maya废墟场景搭建