以该例子来记录自己对self和_init_的理解的理解

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------------------------------------
Function:
【整理】Python中:self和init__的含义 + 为何要有self和__init__
http://www.crifan.com/summary_the_meaning_of_self_and___init___in_python_and_why_need_them
Author:     Crifan
Verison:    2012-11-27
-------------------------------------------------------------------------------
"""  class Person:  def __init__(self, newPersionName):  self.name = newPersionName;  def sayYourName(self):  print 'My name is %s'%(self.name); #My name is crifan  def initDemo():  persionInstance = Person("crifan");  persionInstance.sayYourName();  if __name__=="__main__":  initDemo();  

类,有属性和方法

类的属性,就是变量,在def __init__函数中,给类的属性初始化,即这个类有什么样的属性
类的方法,就是函数,在下面的def sayYourName(self)函数中,定义类的方法,即这个类能做什么
这样,在class Person: 函数段中,类person就具有了属性和方法.

类的实例,就是一个具体的例子,具备类的属性和方法,且把类的属性和方法都实例化
1.将类的属性赋值
2.将类的方法进行具体的调用

self指当前类的实例本身
Python中,函数的第一个参数,名字为self,且是实例对象本身
Python中就规定好了,函数的第一个参数,就必须是实例对象本身,并且建议,约定俗成,把其名字写为self

__init__函数,是给对应的类Class本身,进行初始化的
1.支持带参数的类的初始化
2.实现类本身相关内容的初始化

__init__函数如何工作:
在创建一个新实例 persionInstance = Person("crifan"); 的时候,我们没有专门调用__init__方法,只是在创建一个类的新实例时,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。

何时去使用 self 和 __init__:
http://woodpecker.org.cn/diveintopython/object_oriented_framework/defining_classes.html#d0e12045

当定义你自已的类方法时,你必须 明确将 self 作为每个方法的第一个参数列出,包括 __init__。当从你的类中调用一个父类的一个方法时,你必须包括 self 参数。但当你从类的外部调用你的类方法时,你不必对 self 参数指定任何值;你完全将其忽略,而 Python 会自动地替你增加实例的引用。

【Python】对self和_init_的理解相关推荐

  1. __init__在python中的用法知乎_python中对_init_的理解及实例解析 python为什么要有一个init函数 知乎...

    Python中"__init__"的意义是什么? Python中__init__的意义依偎着你心跳声如此频繁,就算世界末日小编也会嚣张的笑. 测试人员学python时,应该如何理解 ...

  2. 谈谈对python的理解_浅谈对python pandas中 inplace 参数的理解

    这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有, ...

  3. php和python的多线程,Python多线程以及线程锁简单理解(代码)

    本篇文章给大家带来的内容是关于Python多线程以及线程锁简单理解(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 多线程threading 模块创建线程创建自己的线程类线程通 ...

  4. Python中浅拷贝和深拷贝的理解与研究

    Python中浅拷贝和深拷贝的理解与研究 单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) ...

  5. pandas中inplace_对python pandas中 inplace 参数的理解

    pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改 inplace = True:不创建新的对象,直接对原始对象进行修改: ​inplace = Fals ...

  6. [1-1 main ]Python主函数及其示例:理解__main_

    Python主函数及其示例:理解__main_ 在深入研究Python编码之前,我们熟悉了Python的主要功能及其重要性. 考虑以下代码 def main():print "hello w ...

  7. python图像三维数组通透理解

    python图像三维数组通透理解 先说结果: 一张图片的颜色是由RGB三个通道构成, 可以把一张图片上的每一个像素点看成一个对象, 这个对象又由RGB三种颜色叠加, 即用一个一维数组表示,假如我们有一 ...

  8. python关于hasattr和getattr的理解

    python关于hasattr和getattr的理解 ## 这是test2模块 def f1():print('F1')def f2():print('F2')def f3():print('F3') ...

  9. Python中浅拷贝和深拷贝的理解与研究 1

    Python中浅拷贝和深拷贝的理解与研究 单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) ...

最新文章

  1. 人工智能入门(二):语音识别基本模型
  2. 阿里代码规范插件 中文使用手册 FOR Eclipse
  3. JVM 调优 —— GC 长时间停顿问题及解决方法
  4. 网盘php资料,怎么搜索百度网盘里的资料(php版)
  5. asp.net 设置分页
  6. Item9:总是要改写toString
  7. POJ 2240题(Floyd)
  8. 科​目​三​智​能​考​试​系​统​实​际​道​路​考​试​项​目​评​判​标​准
  9. Linux: chmod 和 chown用法小结
  10. highcharts.js两种数据绑定方式和异步加载数据的使用
  11. Linux下进程的建立 并附Linux exec函数族
  12. PHP面向对象知识点
  13. 开源框架ZedGraph的使用
  14. 峰值信噪比公式_数字音频水印——峰值信噪比PSNR与信噪比SNR的问题。求告之!求代码!...
  15. 性能优化实战-sql递归查询效率低下
  16. 软件智能:aaas系统中AI的任务能力和工作
  17. opencv中Mat与vector互转
  18. 大连创业圈:孤独与寂寞并存
  19. CSC在卢森堡新增两位高管,并获得可拓展其服务范围的基金管理和存托牌照
  20. telegram协议电报群组采集,群用户提取,私发消息,群拉人,关键词监控回复等引流自动化

热门文章

  1. qsort()的用法
  2. Cortex-M3内核中的异常
  3. 改变跳转页面 英文_如何高效阅读英文文献?你可以试试它 | 知云文献翻译
  4. ubuntu百度网盘下载大文件
  5. 时间复杂度为on的排序算法_快速排序的时间复杂度为啥是为O(nlogn)
  6. vivo解bl锁_黔隆科技刷机教程酷派B770S忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  7. 基于MATLAB的面对对象编程(3)——事件和响应
  8. GGNN(Gated Graph Sequence Neural Networks)
  9. Leetcode-一篇帖子就够啦
  10. 7、Reverse Integer(python)