def __init__():的含义

关于__init__()函数,其本身是python的构造方法。如果不清楚这一点,看着ta就会一脸懵逼。

这个函数类似init()初始化方法,来初始化新创建对象的状态,在一个对象被创建以后会立即调用。

1.首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问。

2.init函数(方法)支持带参数的类的初始化 ,也可为声明该类的属性

3.init函数(方法)的第一个参数必须是 self(self为习惯用法,也可以用别的名字),后续参数则可 以自由指定,和定义函数没有任何区别。

self参数含义

在类的代码(函数)中,需要访问当前的实例中的变量和函数的,即,访问Instance中的:

对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值

调用对应函数(function):Instance.function(),即执行对应的动作

此处的Instance本身就是self。

Python中的self等价于C++中的self指针和Java、C#中的this参数。

实例说明一下

比如像实例化一个类:

1

2

3

4

5

6

7

8

9

10

11

12class Cats:

def __init__(self):

self.age = 2

>>>mimi = Cats()

>>>mimi.age

>>>2

class Cats:

def __init__(self):

self.age = 2

>>>mimi = Cats()

>>>mimi.age

>>>2

我们会发现在初始化Cats中的age的值为2之后,实例化直接就能够调用age的值。

在明白了构造方法之后,我们谈一谈构造方法中的初始值无法继承的问题。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31class Dog:

def __init__(self):

self.hungry = True

def eat(self):

if self.hungry:

print 'wang'

else:

print 'no'

class hsq(Bird):

def __init__(self):

self.fur = 'white'

def play(self):

print ("chaijia")

hh = haq()

hh.play() #能正常输出

hh.eat() #报错,因为hsq中没有hungry特性

class Dog:

def __init__(self):

self.hungry = True

def eat(self):

if self.hungry:

print 'wang'

else:

print 'no'

class hsq(Bird):

def __init__(self):

self.fur = 'white'

def play(self):

print ("chaijia")

hh = haq()

hh.play() #能正常输出

hh.eat() #报错,因为hsq中没有hungry特性

原理:在调用了一个实例的方法时,该方法的self参数会自动绑定到实例上(称为绑定方法);

解决:使用super函数(只在新式类中有用)

1

2

3

4

5

6

7

8

9

10

11class hsq(Dog):

def __init__(self):

super(Dog,self).__init__()

self.sound = 'Squawk'

def sing(self):

print self.song()

class hsq(Dog):

def __init__(self):

super(Dog,self).__init__()

self.sound = 'Squawk'

def sing(self):

print self.song()

python中def _init_是什么意思_python中def __init__():的含义相关推荐

  1. python中def _init_是什么意思_Python中self和__init__的含义与使用

    原文地址https://blog.csdn.net/love666666shen/article/details/78189984 Python中的self 在Python中的类Class的代码中,常 ...

  2. python中def _init_是什么意思_python中的__init__(self)是什么意思呢

    __init__(self)这个时类的初始化函数 classObj:def __init__(self):print 1obj= Obj() #这时候__init__这个函数会被调用,self指obj ...

  3. python之33个关键字详解_Python 中的关键字 with 详解

    在 Python 2.5 中,with关键字被加入.它将常用的 try ... except ... finally ...模式很方便的被复用.看一个最经典的例子: with open('file.t ...

  4. python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...

    摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...

  5. python中的列表是指针吗_Python中的指针——到底指什么(二)

    在 Python中的指针--到底指什么(一) 中,我们知道在Python的一切都是对象,变量其实是指向PyObject对象的名称,对不可变变量进行操作后,名称指向了另一个PyObject. 扣留对象 ...

  6. python的作用域分别有几种_python中作用域与函数嵌套

    知识回顾: 拆解传参. 1.字典传参.使用** 2.列表传参.使用* 实际上我们在定义函数的时候,如果省略了星号,那么在调用函数的时候必须要省略星号,除非我们拆解后的参数个数刚好相等. 视频内容 本节 ...

  7. python中布尔类型是特殊的_Python中的特殊方法以及应用详解

    前言 Python 中的特殊方法主要是为了被解释器调用的,因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法.在执行 len(my_object) ...

  8. python中属于私有属性的是_Python中的实例属性和私有属性

    相关知识点 实例属性 实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下: 1 classC:2 b = 1 #类属性 3 4 def __init__(s ...

  9. python中sys模块是什么内容_python中sys模块是做什么用的

    python中的sys是提供了一系列有关python运行环境的变量和函数的模块,如sys.argv函数实现从程序外部向程序传递参数:sys.platform函数用于获取当前系统平台. sys模块提供了 ...

最新文章

  1. Java字符串就该这样设计
  2. VR Cinema 来了!未来的影院也许是酱紫滴
  3. 工作中关于rpm的一个简单但头疼的问题
  4. arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译
  5. 【eclipse】安装 Gradle 插件
  6. 迭代器(Iterator)模式
  7. ibatis实现1对多
  8. Canopy聚类算法分析
  9. 交叉编译ncurses5.6
  10. 将输入流读取成String后返回
  11. python匹配部分字符串_python – 即使只是部分匹配字符串,如何匹配字符串?
  12. malloc.h头文件和malloc函数详解
  13. 根据IP查询地理位置(简单易懂,详细注解)
  14. 贪吃蛇java游戏代码_java实现贪吃蛇游戏代码(附完整源码)
  15. MAC上有哪些优秀的日常软件| 入门级Mac OS 用户必备软件
  16. 剑指offer算法题028:数组中出现次数超过一半的数字
  17. 网络知识基础篇(网络分层和IP地址)
  18. 【电气安全】关于医疗专用隔离电源系统在医院配电系统中的应用
  19. 四川大学考研真题 || 信息资源管理导论(二)
  20. java玩转区块链-基础篇-账户

热门文章

  1. 前端面试中浏览器相关问题(二):回流与重绘
  2. 日期计算 节假日 一年有多少天放假
  3. 基于SSM开发宠物在线医疗系统
  4. 2023年易派客工业品展圆满落幕 期待与您再次相遇
  5. JS数组去重 ES6 方法
  6. 《现代通信原理》远程题库(全)
  7. python中的pypinyin库
  8. MySQL - 循环与游标
  9. 离职回家了!发20000个红包封面
  10. Paypal 测试账号的建立