python中def _init_是什么意思_python中def __init__():的含义
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__():的含义相关推荐
- python中def _init_是什么意思_Python中self和__init__的含义与使用
原文地址https://blog.csdn.net/love666666shen/article/details/78189984 Python中的self 在Python中的类Class的代码中,常 ...
- python中def _init_是什么意思_python中的__init__(self)是什么意思呢
__init__(self)这个时类的初始化函数 classObj:def __init__(self):print 1obj= Obj() #这时候__init__这个函数会被调用,self指obj ...
- python之33个关键字详解_Python 中的关键字 with 详解
在 Python 2.5 中,with关键字被加入.它将常用的 try ... except ... finally ...模式很方便的被复用.看一个最经典的例子: with open('file.t ...
- python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...
摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...
- python中的列表是指针吗_Python中的指针——到底指什么(二)
在 Python中的指针--到底指什么(一) 中,我们知道在Python的一切都是对象,变量其实是指向PyObject对象的名称,对不可变变量进行操作后,名称指向了另一个PyObject. 扣留对象 ...
- python的作用域分别有几种_python中作用域与函数嵌套
知识回顾: 拆解传参. 1.字典传参.使用** 2.列表传参.使用* 实际上我们在定义函数的时候,如果省略了星号,那么在调用函数的时候必须要省略星号,除非我们拆解后的参数个数刚好相等. 视频内容 本节 ...
- python中布尔类型是特殊的_Python中的特殊方法以及应用详解
前言 Python 中的特殊方法主要是为了被解释器调用的,因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法.在执行 len(my_object) ...
- python中属于私有属性的是_Python中的实例属性和私有属性
相关知识点 实例属性 实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下: 1 classC:2 b = 1 #类属性 3 4 def __init__(s ...
- python中sys模块是什么内容_python中sys模块是做什么用的
python中的sys是提供了一系列有关python运行环境的变量和函数的模块,如sys.argv函数实现从程序外部向程序传递参数:sys.platform函数用于获取当前系统平台. sys模块提供了 ...
最新文章
- Java字符串就该这样设计
- VR Cinema 来了!未来的影院也许是酱紫滴
- 工作中关于rpm的一个简单但头疼的问题
- arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译
- 【eclipse】安装 Gradle 插件
- 迭代器(Iterator)模式
- ibatis实现1对多
- Canopy聚类算法分析
- 交叉编译ncurses5.6
- 将输入流读取成String后返回
- python匹配部分字符串_python – 即使只是部分匹配字符串,如何匹配字符串?
- malloc.h头文件和malloc函数详解
- 根据IP查询地理位置(简单易懂,详细注解)
- 贪吃蛇java游戏代码_java实现贪吃蛇游戏代码(附完整源码)
- MAC上有哪些优秀的日常软件| 入门级Mac OS 用户必备软件
- 剑指offer算法题028:数组中出现次数超过一半的数字
- 网络知识基础篇(网络分层和IP地址)
- 【电气安全】关于医疗专用隔离电源系统在医院配电系统中的应用
- 四川大学考研真题 || 信息资源管理导论(二)
- java玩转区块链-基础篇-账户