一文搞懂python中的__init__的意思及使用场景
文章推薦指數: 80 %
__init__普通用法. init只是用来初始化值,但都需要新定义方法来返回这个参数!!! class ClassName(object): def __init__(self, ...
一文搞懂python中的__init__的意思及使用场景
/*守护她的笑容
于 2020-11-0916:48:36 发布
8588
收藏
49
分类专栏:
python
文章标签:
python
类
class
面向对象编程
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cuichongxin/article/details/109580807
版权
python
专栏收录该内容
19篇文章
10订阅
订阅专栏
文章目录
__init__解释用__init__与不用__init__对比__init__直接输出(不建议这么用)__init__普通用法不用__init__
总结
__init__解释
__init__是构造方法,谁调用,表示谁(更直观的理解就是类的方法中,谁调用,表示谁,见下面第一个代码)!!并不是必选项,也就是说在类中,这个不是必须用的,那什么场景需要用到,什么场景不需要用到呢,下面会做说明!下面代码是最基本的类定义代码:
classPerson:
def__init__(self,name,age):
self.name=name
#self.name,这里的name并不是def__init__里面的name,这个name可以自定义,但=后面的name就是__init__里面的name了
self.age=age
deftest(self):
#谁调用表示谁,就是这种情况,这个test方法调用了这个类中init的name和age,也就是说这个类的name和age表示为test方法
print(self.name,self,age)
class关键字后面跟类的名称就定义了一个类,类的名称可以任意,采用驼峰命名法,也即每个单词的首字母大写,如Book、Person、WildAnimal等这里的__init__方法是一个特殊的方法(init是单词初始化initialization的省略形式),在使用类创建对象之后被执行,用于给新创建的对象初始化属性用。
初始化属性的语句就是self.name=name这种了,这一句不太好理解,我们把它改编一下就好理解了:
def__init__(self,n,a):
self.name=n
self.age=a
首先这是一个方法,方法的形参有self,n和a三个。
这个self,表示对象本身,谁调用,就表示谁(这句话不好理解,先记住,我们后面分析)。
语法上,类中的方法的第一个参数都是self,这是和普通方法区别的地方。
这里self.name=n和self.age=a表示将外部传来的n和a,赋值给了self对象的name和age属性。
这里的n和a,其实叫什么都可以,但是会有个问题:一般我们调用方法的时候,想自动提示一下或者查看文档看一下这个方法的参数要求,如果形参名都是n、a、m、i这些,会让人摸不着头脑,不知道到底该传入什么样的实参。
因为这里我们传入实参是为了给属性赋值,为了能见名知意,将形参的名字定义的跟属性一致,调用者就知道该怎么传参了。
所以才有了上面的写法。
再来说创建对象:p=Person('小明',20)这句话就创建出来了一个具体的人,并且给这个人起了个名字叫小明,指定了小明的年龄为20,并且将小明这个对象赋值给了变量p,此时p就表示小明这个人(对象)这就造出了一个人。
注:这里的小明和20并不是任意创造的,而是在Person这个函数中定义了2个参数(name,age),所以这必须实例化2个参数!!另外,在重复一下这个流程吧:定义类(class)-创建方法(对象)(def)——创建实例(绑定属性)(p=类名)——传参(有init的不需要单独传参)-调用代码如下:
#定义一个类,使用class关键字
classStudent:
pass#暂时不赋值
#创建类的对象
stu1=Student()#创建Student类的一个实例
stu2=Student()
print(stu1,'自定义类型type:',type(stu1))
print(stu2,'自定义类型type:',type(stu2))
#为对象绑定属性(注:需要先给类创建实例)
stu1.name='ccx'
stu1.age=22
stu2.name='xgq'
stu2.age=23
stu2.sex='woman'
#调用
print('stu1的参数:',stu1.name,stu1.age)#打印stu1的参数
print('stu2的参数:',stu2.name,stu2.sex,stu2.age)#打印stu2的参数
插入:这里就是人们常常调侃的,程序员不需要女朋友,如果需要,就给自己创建一个对象,不,最少要创建10个对象!!!对象就是传的参就是这样:
#创建类
classGirlFriend:
#创建方法
def__init__(self,num,name,age,features):
#初始化参数
self.num=num
self.name=name
self.age=age
self.features=features
defMyGirlFriend(self):
print('我的第',self.num,'个女朋友,名字叫',self.name,',她今年',self.age,'岁了,特征是:',self.features,'!!!!',sep='')
#定义对象
gf1=GirlFriend(1,'刘亦菲',24,'漂亮的脸蛋性感的身材')
gf2=GirlFriend(2,'杨幂',23,'有让人陶醉的声音')
gf3=GirlFriend(3,'汤唯',24,'喜欢没道理')
#调用
gf1.MyGirlFriend()
gf2.MyGirlFriend()
gf3.MyGirlFriend()
用__init__与不用__init__对比
__init__直接输出(不建议这么用)
这种构造方法,在创建对象时会自动调用,不需要单独调用该方法!不建议这么用
classClassName(object):
def__init__(self,name):
#必须要初始化值
self.name=name
print('ClassName:',self.name,'inrun')
p=ClassName('xgq')
__init__普通用法
init只是用来初始化值,但都需要新定义方法来返回这个参数!!!
classClassName(object):
def__init__(self,name):
self.name=name
defrun(self):
print('ClassName_run:',self.name,'inrun')
p=ClassName('xgq')
p.run()
不用__init__
#定义类
classPerson:
#定义方法
deftest(self,name):
print('nameis:',self.name,'~!!!')
#定义对象
p=Person()
#传参
p.name='ccx'
#调用
p.test('xgq')
在执行结果中可以看出,用了init就需要在定义对象的时候就赋值,而不用init的话,是不需要再定义对象的时候就赋值,需要单独传参,但是因为在test中定义了name,所以在调用的时候,也需要传一个参数,但如果不用init,在调用的时候传参,是没有任何意义的,因为类中的方法默认接受的参数是单独定义的参数,而不是是调用的时候传的参!!!
总结
反正你需要知道的是,__init__是构造方法,在创建对象时会自动调用,而且构造方法(函数),不支持重载,如果需要给这个类定义参数,就需要用init,反正就不需要用!
下面我给一个子类继承父类的方法,如果不用init你可以自行尝试是什么结果!!
#定义一个Person类,父类(超类,基类)
classPerson:
def__init__(self,name):#定义私有类
self.name=name
defrun(self):#定义一个类函数
print('person:'+self.name+'正在奔跑啊啊啊')
classStudent(Person):#继承自Person
def__init__(self,name,set,age):#定义私有类
#调用父类的构造方法
#Person.__init__(name)#方式一:直接指定父类的构造方法
super().__init__(name)#方式二:使用super(),推荐使用该方法
#自己类中的构造方法且父类中没有的,直接定义即可
self.set=set
self.age=age
defstudy(self):#定义一个类函数
print('stadent:'+self.name+'正在学习。
。
。
。
')
defshow(self):#定义一个类函数
print('name:%s,set:%s,age:%s'%(self.name,self.set,self.age))
#可以自定义n个类函数。
。
。
stu=Student('ccx','man',22)
stu.run()#因为继承了父类,当然也可以直接调用父类函数
stu.study()
stu.show()
/*守护她的笑容
关注
关注
23
点赞
踩
49
收藏
打赏
0
评论
一文搞懂python中的__init__的意思及使用场景
文章目录__init__解释用__init__与不用__init__对比__init__直接输出(不建议这么用)__init__普通用法不用__init__总结__init__解释__init__是构造方法,谁调用,表示谁(更直观的理解就是类的方法中,谁调用,表示谁,见下面第一个代码)!!并不是必选项,也就是说在类中,这个不是必须用的,那什么场景需要用到,什么场景不需要用到呢,下面会做说明!下面代码是最基本的类定义代码:classPerson:def__init__(self,nam
复制链接
扫一扫
专栏目录
Python中__init__.py文件的作用详解
09-21
__init__.py文件的作用是将文件夹变为一个Python模块,Python中的每个模块的包中,都有__init__.py文件.这篇文章主要介绍了Python中__init__.py文件的作用详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
参与评论
您还未登录,请先
登录
后发表或查看评论
【Python小知识】__init__()详解
Mr____Cheng的博客
05-14
467
__init__详解1、__init__()是什么?2、如何写__init__()?
1、__init__()是什么?
从形式上看,__init__()是一个函数。
事实上,它是一个特殊的函数——构造函数,学过C或Java的应该都知道构造函数,没学过也没关系,构造函数相当于是对类中成员的一个初始化,且写法固定。
2、如何写__init__()?
__init__()是Python中类里面的构造函数,因此,写法固定。
以一个例子来说明__init__()的写法:
classEnc
python中init函数详解_Python中__init__函数以及参数self
weixin_33130645的博客
01-29
9597
Java网站链接:Java全栈工程师|以实例驱动学习|how2j.cn1)class类包含:类的属性:类中所涉及的变量类的方法:类中函数2)__init函数(方法)1、带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问。
2、init函数(方法)支持带参数的类的初始化,也可以为声明该类的属性3、init函数(方法)的第一个参数必须是self(self为习惯用法,也可...
Python中__init__的用法和理解
热门推荐
luzhan66的博客
09-23
10万+
在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问。
而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量)。
__init__函数(方法)的第一个参数必须为self,后续参数为自己定义。
从文字理解比较困难,通过下面的例子能非常容易理解这个概念:
例如我们定义一个Box...
__init__
风华浪浪的博客
07-29
7891
init方法
1__init__监听对象创建完成增加属性
用于初始化一个实例,控制这个初始化的过程实例级别的方法
2.str监听打印对象return“返回值可以返回字符串”
3.new通常用于控制生成一个新实例的过程。
类级别的方法
classCat:
#创建init方法参数
def__init__(self...
python中__init__()方法的含义
qq_37993640的博客
11-25
754
python类中定义的函数称为方法,init()方法本质也是一个函数。
这个函数的作用是初始化实例后的对象。
具体如下例:
init()方法的作用是初始化实例后的对象cqueue。
classCQueue:
#类中的函数称为方法,这里的__init__()方法在类实例化是被自动调用。
若类定义了__init__()方法,类的实例化操作会自动调用__init__方法。
#__init__方法可以有参数,参数通过__init__()传递到类的实例化操作上。
self代表的是类的实例,而非类。
pythoninit_「Python」_init_理解与学习
weixin_39733943的博客
11-29
56
Python是面向对象的编程语言,因此我从Class、Instance以及属性(property/attribute)的角度出发解释。
_init_根据其英文意思(initialize),用来初始化一个类(class)的新成员(instance),它是一个constructor.当新成员被创建时,这个方程会自动被调用。
仅举俩个(极端的)例子作对比,为了不复杂化导致混淆,建议只看1~1,使用_init...
__init__方法
二黑的博客
05-08
837
在Python的类中有很多方法的名字有特殊的重要意义。
__init__方法在类的一个对象被建立时,马上运行。
这个方法可以用来对你的对象做一些你希望的初始化。
注意,这个名称的开始和结尾都是双下划线。
#!/usr/bin/python
classPerson:
def__init__(self,name):
self.name=name
de...
__init__的用法
Chenzhinan1219的博客
10-01
291
在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问。
而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量)。
__init__函数(方法)的第一个参数必须为self,后续参数为自己定义。
从文字理解比较困难,通过下面的例子能非常容易理解这个概念:
例如我们定义一个Box类,有width,height,depth三个属性,以及计算体积的方法:
#!/usr/bin/pytho
Python中的__init__()方法整理中(两种解释)
IT届的小学生
06-05
6430
解释一:看懂了就不用看第二种了
__init__()方法是Python学习当中重要的基础知识,__init__()方法意义重大的原因有两个。
第一个原因是在对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作。
第二个原因是__init__()参数值可以有多种形式。
因为有很多种方式为__init__()提供参数值,对于对象创建有大量的用例,我们可以看看其中的几个。
我们
Python类构造方法__init__详解[OOP][Constructor][构造方法的调用]
码农阿杰的博客
05-22
4031
Python中的`__init__()`方法,是一个特殊的类实例方法,称为构造方法、构造函数或构造器。
仅包含self参数的`__init__(self)`构造方法,又称为类的默认构造方法。
构造方法最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。
在Python类中,如果不手动为类添加任何构造方法,Python会自动为类添加一个仅包含self参数的构造方法。
当然,也可以手动为类添加构造方法。
内核中_init,_exit中的作用
maopig的专栏
03-30
1万+
__init,__initdata等属性标志,是要把这种属性的代码放入目标文件的.init.text节,数据放入.init.data节──这一过程是通过编译内核时为相关目标平台提供了xxx.lds链接脚本来指导ld完成的。
对编译成module的代码和数据来说,当模块加载时,__init属性的函数就被执行;
对静态编入内核的代码和数据来说,当内核引导时,do_basic_set
Python:self、__init__、实例属性方法及类属性方法的互相调用
weixin_45548112的博客
12-12
891
"""
程序运行的机制,会先运行顶格写的代码
初始化:也叫实例化,即通过定义的类得到一个具体的对象
__init__(是个实例方法)的作用:用来定义实例属性(不是类属性)。
定义实例属性的方式有两种
在类里面定义实例属性时:需要加上self,即self.实例属性=形式参数
在类外面定义实例属性时:对象名.属性
self:表示在类里面,对象本身,是个占坑的符号,代表对象自己本身。
cls:表示类本身
"""
classAnimal:
height='1.5'#类属性
.
python中__init__文件的作用
weixin_45552310的博客
10-11
1461
一、__init__文件的作用
1、python中package的标识,不可删除(删除后HTMLTest跑自动化的时候识别不了python模块,导致用例不会执行)
2、定义__all__用来模糊导入
3、可以用来编写python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
二、__all__变量
变量__all__一般定义...
python中__init__函数的作用
最新发布
crayonjingjing的博客
06-21
1140
在创建类的时候往往会用到__init__函数这一类两边带有下划线的函数往往是私有函数,只能在该类的内部使用。
init的本意就是初始化的意思,一般出现在程序创建类中的第一个函数。
例如:
其实也可以不用初始化。
比如:
这样的话,我们初始化的类中也会有一个name参数,但这个参数已经固定了赋值为“red”如果我们运用__init__函数,则声明了一个可以动态变化的参数name例如:
结果就是"red2",当然,你也可以传递不同的参数。
我的理解就是__init__函数在创建类的开始,初始化一些参数,给
pythonnew和init的区别_Python__new__和__init__的区别
weixin_31649177的博客
01-28
42
由于知乎的编辑器不支持MarkDown语法,文章中的一些MarkDown标注无法正确显示,如果你想要追求更好的阅读体验,可以移步该博客的简书链接.Python__new__和__init__的区别www.jianshu.com`__new__()`是在新式类中新出现的方法,它作用在构造方法(`__init__()`)建造实例之前.可以这么理解,在Python中存...
8.3python__init__()方法
weixin_63986098的博客
03-19
1187
8.3init()方法
目录
8.3.1什么是__init__()方法
8.3.2init()方法的语法
8.3.3init()方法的作用
8.3.4init()方法与自定义方法的区别
8.3.5类的方法和函数的区别
8.3.6类与对象知识框架图
8.3.1什么是__init__()方法
init()方法是类里面的一个特殊的固有方法。
类似内置函数一样,但不能完成等同。
init是initialization的缩写。
initialization[ɪˌnɪʃəlaɪ’zeɪʃn]:初始化。
python:构造方法__init__()
不怕猫的耗子A
06-17
7245
python魔法方法:__init__()
1、__init__()方法称为构造方法,__init__()方法的魔力体现在只要实例化一个对象,这个方法就会在对象被创建时自动调用。
2、实例化对象时是可以传入参数的,这些参数会自动传入__init__()方法中,可以通过重写这个方法来自定义对象的初始化操作
总结:__init__()方法是一个特殊的方法,在对象实例化时会被调用,__ini...
python中__init__函数的理解
柳小葱的博客
05-25
4436
python中__init__函数的理解
在创建类的时候往往会用到__init__函数这一类两边带有下划线的函数往往是私有函数,只能在该类的内部使用。
init的本意就是初始化的意思,一般出现在程序创建类中的第一个函数。
例如:
其实也可以不用初始化。
比如:
这样的话,我们初始化的类中也会有一个name参数,但这个参数已经固定了赋值为“red”
如果我们运用__init__函数,则声明了一个可以动态变化的参数name例如:
结果就是"red2",当然,你也可以传递不同的参数。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:博客之星2020
设计师:CSDN官方博客
返回首页
/*守护她的笑容
CSDN认证博客专家
CSDN认证企业博客
码龄3年
云计算领域新星创作者
382
原创
845
周排名
912
总排名
192万+
访问
等级
1万+
积分
1万+
粉丝
1195
获赞
418
评论
5580
收藏
私信
关注
热门文章
英语词性大全+详解
74053
shell脚本基础笔记(全)
46798
win10打开软件提示无法成功完成操作因为文件包含病毒
41669
iscsi(共享存储)详细带图说明:iscsi服务器配置、iscsi客户端配置
37949
崔崇鑫
37208
分类专栏
玩转linux
108篇
HCIA-P-E笔记
3篇
草图大师2021【sketchup2021】
19篇
【kubernetes】k8s
37篇
shell
58篇
网络
26篇
python
19篇
windows技巧
39篇
openstack
30篇
docker
20篇
vmware
13篇
机房服务器
9篇
HCIA-storage【存储】
15篇
英语
4篇
MySQL据库
3篇
深度好文
21篇
ZStack
11篇
java
11篇
最新评论
linux任何用户ssh正确密码登陆均报错Permissiondenied,pleasetryagain.处理方法,linux限制root直登后普通用户输入正确密码提示密码错误处理方法。
名为爱的绝色:
ssh-keygen-R地址
ModuleNotFoundError:Nomodulenamed‘pyecharts.charts‘;‘pyecharts‘isnotapackage
Yokon_D:
明明在pycharm命令行提示anaconda有pyecharms,代码运行却提示没有这个模块。
又因为pycharm破解版本太低,不能用cmd装pyecharms。
conda配置也没问题,但是确实也没看到pyecharms模块。
百思不得其解,没想到问题会出现在同名。
openstack在dashboard用iso制作qcow2的镜像【制作linux为例】、linux重封装
/*守护她的笑容:
你应该知道ISO镜像每创建一个虚拟机都是从头装一个系统而qcow2就是封装好的操作系统(你理解为VMware的模版)
为什么OpenStack不使用ISO,换一个角度想如果你需要10台100台虚拟机,你用ISO镜像就要手动装10次100次系统,而qcow封装好的镜像只需要点一次创建就可以了(可以通过该模版一次批量生成10台100台虚拟机)
openstack在dashboard用iso制作qcow2的镜像【制作linux为例】、linux重封装
靓仔且落泪:
您好,请问一下为什么不直接使用iso格式镜像创建的云主机,而是使用iso镜像转换的qcow2的镜像来创建我们实际使用的虚拟机呢
【Kubernetes】k8s集群升级详细说明【k8s升级kubeadm集群】【万能版本升级方法】
/*守护她的笑容:
我文章中是失败的哦,原因文章已经说明了。
你外网主机下载离线包的时候用一台全新的主机,导入有依赖的离线包升级应该没得问题
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
expect脚本中使用普通用户执行sh脚本命令,expect脚本中解决``反引号获取值有问题方法、expect遍历登录不同主机不同密码的主机执行指定命令方法
(esxi底层)商用VMware导入ova格式镜像文件流程、(esxi底层)商用vmware虚拟机开机报错无法将交换文件从0KB扩展到KB、(esxi底层)商用vmware上传镜像流程
【AdobePremierePro2020】pr模板下载和pr使用模板创建视频、pr调色说明、pr全景视频编辑说明、pr无缝转场特效制作流程、pr保存预设效果和pr使用预设效果
2022
09月
1篇
08月
6篇
07月
6篇
06月
8篇
05月
11篇
04月
12篇
03月
6篇
02月
8篇
01月
6篇
2021年123篇
2020年141篇
2019年54篇
目录
目录
分类专栏
玩转linux
108篇
HCIA-P-E笔记
3篇
草图大师2021【sketchup2021】
19篇
【kubernetes】k8s
37篇
shell
58篇
网络
26篇
python
19篇
windows技巧
39篇
openstack
30篇
docker
20篇
vmware
13篇
机房服务器
9篇
HCIA-storage【存储】
15篇
英语
4篇
MySQL据库
3篇
深度好文
21篇
ZStack
11篇
java
11篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
/*守护她的笑容
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:--)
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1【Python基礎】什麼是self?什麼是__init__?:看完文章馬上會用
(3) __init__是什麼? 就是物件在具體化的時候會把__init__(self)底下的運算邏輯等先執行一遍,在nask = ...
- 2python 物件導向疑問 - iT 邦幫忙
class Dog(): def __init__(self, name, age): # 設定物件本身(self)屬性(.name/age)為 ... 在python中,使用者對於屬性和方法是...
- 3Python中__init__的通俗解释是什么? - 知乎
但是这两天一直被__init__的用法卡住脚步,总是看不懂其使用方法,看了很多网上资料也没弄清意思,所以希望有大神可以指教一下!谢谢! 查看问题描述. 关注问题 写回答.
- 401 详解Python3中的__init__和__new__的区别
使用Python写过面向对象的代码的同学,可能对__init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。 ... 这样便是__init__最普通的用法了。
- 5Python 類class 中__init__ 函式以及引數self - 程式人生
Python 類class 中__init__ 函式以及引數self ... 3.init函式(方法)的第一個引數必須是self(self為習慣用法,也可以用別的名字),後續引數則可以 ...