方法中的 self 参数

  1. 给对象增加属性

先来看个例子:

class Cat:def eat(self):print("%s 爱吃鱼" % self.name)

在 Python 中,要 给对象设置属性,非常的容易,但是不推荐使用

tom.name = "Tom"
lazy_cat.name = "大懒猫"

因为:对象属性的封装应该封装在类的内部 只需要在 类的外部的代码 中直接通过 . 设置一个属性即可
注意:这种方式虽然简单,但是不推荐使用!

使用 self 在方法内部输出每一只猫的名字 由 哪一个对象 调用的方法,方法内的 self 就是 哪一个对象的引用 在类封装的方法内部,self 就表示 当前调用方法的对象自己 调用方法时,程序员不需要传递 self 参数 在方法内部 可以通过 self. 访问对象的属性 也可以通过 self. 调用其他的对象方法

改造代码如下:

class Cat:def eat(self):print("%s 爱吃鱼" % self.name)tom = Cat()
# tom.eat()
# 给对象临时增加属性
tom.name = "Tom"
# 现在调用就没问题
tom.eat()
lazy_cat = Cat()
lazy_cat.name = "大懒猫"
lazy_cat.eat()

运行结果如下:
“”"
Tom 爱吃鱼
大懒猫 爱吃鱼
“”"

在 类的外部,通过 变量名. 访问对象的 属性和方法
在 类封装的方法中,通过 self. 访问对象的 属性和方法
在类的外部给对象增加属性
将案例代码进行调整,先调用方法 再设置属性,观察一下执行效果

python tom = Cat()
tom.drink()
tom.eat()
tom.name = "Tom"
print(tom)# 程序执行报错如下:
# AttributeError: 'Cat' object has no attribute 'name' 属性错误:'Cat' 对象没有 'name' 属性

提示

  • 在日常开发中,不推荐在 类的外部 给对象增加属性
  • 如果在运行时,没有找到属性,程序会报错
  • 对象应该包含有哪些属性,应该 封装在类的内部
  1. 未完待续

转载于:https://www.cnblogs.com/onefine/p/10499391.html

Python中关于‘self’的种种用法笔记相关推荐

  1. Python学习笔记(一)1.Python中end=和sep=的用法与区别。

    一.Python中end=和sep=的用法与区别: python中常用到的end=和sep=两种参数用法相似,一个是python输出结尾,一个是python输出分割. end: 默认是换行,表示两个字 ...

  2. python中iloc和loc的用法

    python中iloc和loc的用法 loc:标签索引 iloc:位置索引 近期学习到了loc和iloc的切片用法,发现用法实在是很多,所以用一个简单的例子进行总结用法,期间也借鉴了大量笔记,如果有错 ...

  3. python的raw_ input是什么意思-对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

  4. python中str和input_对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

  5. Python中try...except...else的用法

    最近在学习Python,于是总结一些基础的语法,以供自己复习查看,同时提供给有需要的朋友们.. 本篇总结了Python中try...except...else的用法. try:     <语句& ...

  6. python3 isinstance用法_对python中assert、isinstance的用法详解

    1. assert 函数说明: Assert statements are a convenient way to insert debugging assertions into a program ...

  7. python join_详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...

  8. python数组用sum求和_对python中array.sum(axis=?)的用法介绍

    根据代码中运行的结果来看,主要由以下几种: 1. sum():将array中每个元素相加的结果 2. axis对应的是维度的相加. 比如: 1.axis=0时,对饮搞得是第一个维度元素的相加, [[0 ...

  9. Python中的基本函数及其常用用法简析

    分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、使用invert_yaxis函数将Y轴坐标反序(invert the y axis in matplotlib)
  2. java filehelper_Spring 发送邮件 使用File指定附件
  3. php表单数量,php – 解析具有未知数量字段的表单
  4. 关于CMMI级别阶梯式前进路线图的对话
  5. c++17(20)-双向循环链表(不依赖具体数据)
  6. 一步一步学Silverlight 2系列(4):鼠标事件处理
  7. Java Spring源代码学习之How is class annotation evaluated by Spring framework
  8. 今天拿到了同事给我买的《java与模式》
  9. Spark踩坑记——数据库(Hbase+Mysql)转
  10. 电脑长时间睡眠会自动关机吗_长期对着电脑皮肤会变黑吗?经常对电脑如何保护皮肤?...
  11. python 字符串匹配like_python中关于正则表达式一
  12. RHEL6入门系列之十七,打包与压缩
  13. ubuntu vscode 配置字体_配置vscode终端字体,vscode终端字体
  14. Phase2 Day16 数据库SQL
  15. 公用方法:得到汉字的首字母(大写) 方案3
  16. 2021 编程语言排行榜
  17. winxp网络找不到计算机,WinXP系统电脑打开WiFi搜索不到无线网络的解决方法
  18. bin文件读写 - C/C++
  19. 武汉大学计算机 韩立,文澜学术系列讲座 第135期 武汉大学经济与管理学院韩立宁老师:“Financial Network and Industry Connectedness”...
  20. mac 更新系统时间

热门文章

  1. C语言 矩阵的几种乘法
  2. WINDOWS与LINUX下的DNS轮询配置
  3. js 检测input输入值是否全是汉字
  4. jquery的trigger和triggerHandler区别
  5. YJX_rxjh_10_2.5.2
  6. 我如何调优SQL Server查询
  7. jqGrid ColModel Options
  8. 【原创】new和delete
  9. ASP.NET Excel导入到SQL Server数据库
  10. 使用hexo yeele主题搭建个人博客