首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗,不要搞另类,大家会不明白的。下例中将self改为myname一样没有错误:

1 class Person:2           def _init_(myname,name):3                    myname.name=name4           def sayhello(myname):5                    print 'My name is:',myname.name6 p=Person('Bill')7 print p

self指的是类实例对象本身(注意:不是类本身)。

1 class Person:2          def _init_(self,name):3                   self.name=name4          def sayhello(self):5                   print 'My name is:',self.name6 p=Person('Bill')7 print p

在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

1 class Person:2          def _init_(self,name):3                   self.name=name4          def sayhello(self):5                   print 'My name is:',self.name6 p=Person('Bill')7 p1 = Person('Apple')8 print p

如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

人生有限,要聚集你的精力到一件事情上,做到最好!

转载于:https://www.cnblogs.com/4-312/p/3166593.html

深入理解python之self相关推荐

  1. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  2. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  3. 深入理解Python闭包概念

    闭包并不只是一个Python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...

  4. python中元组_理解python中的元组

    理解 python 中的元组 引言 在 Python 中元组是这样的: 元组是是这样一种数据结构:不变的或者不可改变的(简单来说不能重新赋值) .元素的有序序列.因为元组是 不变的,所以他的数值是不能 ...

  5. python中继承是什么意思_如何理解Python中的继承?python入门

    如何理解Python中的继承?如今,python编程语言深受企业和个人的喜爱.python开发工程师是近年来互联网行业非常热门的职业岗位之一.学习python的人除了零基础的,还有一部分是在职运维.在 ...

  6. python装饰器原理-深刻理解python装饰器

    我们要完全理解python装饰器,不是很容易,主要归结有如下困难: 1. 关于函数"变量"(或"变量"函数)的理解 2. 关于高阶函数的理解 3. 关于嵌套函数 ...

  7. python装饰器-理解Python装饰器(Decorator)

    理解Python装饰器(Decorator) Python装饰器看起来类似Java中的注解,然鹅和注解并不相同,不过同样能够实现面向切面编程. 想要理解Python中的装饰器,不得不先理解闭包(clo ...

  8. python装饰器作用-理解python中的装饰器

    一 什么是装饰器? 正如其名,装饰器的作用是为已经存在的对象增加额外功能(装饰),由此可使已有函数在无需代码改动的情况下增加额外功能:装饰器的本质是嵌套的函数且返回函数对象,即闭包.有关闭包的概念,可 ...

  9. python怎么导入包-如何理解Python中包的引入

    Python的from import *和from import *,它们的功能都是将包引入使用,但是它们是怎么执行的以及为什么使用这种语法呢? 从一模块导入全部功能 from import * me ...

  10. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

最新文章

  1. 转:Python 代码调试技巧
  2. 论对一个程序的满意程度 | 每日趣闻
  3. 分析师洞察:边缘数据中心的UPS系统
  4. GDCM:gdcm::UIComp的测试程序
  5. linux卸载已安装的java_Linux 中如何卸载已安装的软件(转载)
  6. mysql表 c#实体类,创建基于MySQL表中的C#类
  7. 【汇编语言】8086汇编语言的debug中,t和p命令的区别
  8. 用fiddler抓包小程序
  9. jq之$(“[href]“)
  10. python扫雷游戏课程设计小组任务计划与分配表_python实现扫雷游戏
  11. java mongodb开发_Java Tutorial:Java操作MongoDB入门
  12. python种颜色循环_python – 重置Matplotlib中的颜色循环
  13. Asp.Net MVC学习总结(三)——过滤器你怎么看?
  14. 阿里巴巴分布式调度引擎tbschedule实战三tbschedule的调度原理
  15. linux中help的用法
  16. java monitor怎么使用_Java monitor机制使用方法解析
  17. css制作 平行四边形和梯形导航条
  18. 【android】悬浮球
  19. 美国各州人口数据分析
  20. Tableau数据分析-Chapter07多边形地图和背景地图

热门文章

  1. mutable关键字
  2. STM32的FSMC详解
  3. 从单体应用到微服务架构演化
  4. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记六
  5. linux:配置jdk环境变量
  6. HTML一些常用的标签
  7. JavaScript四舍五入的改进
  8. 跟我一起学docker(五)--仓库
  9. vsphere---vmotion
  10. Socket的三个关联函数