一文搞懂python中的__init__的意思及使用场景

文章推薦指數: 80 %
投票人數:10人

__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币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?