类的特殊方法init | Python从入门到精通:高阶篇之二十四

简介: 在类中可以定义一些特殊方法(魔术方法),特殊方法都是以__开头,__结尾的方法,特殊方法不需要我们自己调用。init就是Python的一种特殊方法,会在对象创建以后离开执行,可以用来向新创建的对象中初始化属性,调用类创建对象时,类后边的所有参数都会依次传递到init()中。

查看上一节:类的属性和方法

类的特殊方法init

首先来看一个示例:

class Person :
    def say_hello(self) :
         print('大家好!我是 %s' %self.name)

p1 = Person()
#手动向对象添加name属性
p1.name='孙悟空'
p2 = Person()
p2.name='猪八戒'

p2.say_hello() 

执行结果为:
image.png
此时如果添加一个p3对象,但是不赋值name的话就会报错。

目前来讲, 对于Person类来说name是必须的, 并且每一个对象中的name属性基本上都是不同;

而我们现在是将name属性在定义为对象以后, 手动添加到对象中,这种方式很容易出现错误。

我们希望在设置对象的时候就必须创建name属性,如果不设置对象将无法创建。

并且属性的创建应该是自动完成的,而不是在创建对象之后手动完成。

在类中可以定义一些特殊方法(魔术方法),特殊方法都是以__开头,__结尾的方法,特殊方法不需要我们自己调用。

不要尝试去调用特殊方法,特殊方法将会在特殊的时刻自动调用。

学习特殊方法:

1.特殊方法什么时候调用
2.特殊方法有什么作用

init就是Python的一种特殊方法,会在对象创建以后离开执行,可以用来向新创建的对象中初始化属性。

调用类创建对象时,类后边的所有参数都会依次传递到init()中。

class Person :
    def __init__(self,name):
        # 通过self向新建的对象中初始化属性
        self.name = name

    def say_hello(self):
        print('大家好,我是%s'%self.name)

p1 = Person('孙悟空')
p2 = Person('猪八戒')
p3 = Person('沙和尚')
p4 = Person('唐僧')


p4.say_hello()

执行结果为:
image.png
此时就完成了强制赋值,因为如果不给传递name的话就会报错。

通过上述的p1创建流程讲解一下创建对象的流程:

p1 = Person()的运行流程
1.创建一个变量
2.在内存中创建一个新对象
3.__init__(self)方法执行
4.将对象的id赋值给变量

也就是说:
1、 init会在对象创建以后离开执行;
2、init可以用来向新创建的对象中初始化属性;
3、调用类创建对象时,类后边的所有参数都会依次传递到init()中。

到这里类与对象就基本结束了,总结一下:

类的基本结构

class 类名([父类]) :

        公共的属性...

        # 对象的初始化方法
        def __init__(self,...):
            ...

        # 其他的方法    
        def method_1(self,...):
            ...

        def method_2(self,...):
            ...

        ...

练习:

尝试自定义一个表示狗的类(Dog)      
属性:
                name
                age
                gender
                height
                ...
方法:  
                jiao()
                yao()
                run()
                ...

点击查看配套学习视频

获取更多内容请订阅Python学习站官方技术圈!

相关文章
|
1天前
|
数据采集 前端开发 JavaScript
Python爬虫入门
网络爬虫是自动抓取网页数据的程序,通过URL获取网页源代码并用正则表达式提取所需信息。反爬机制是网站为防止爬取数据设置的障碍,而反反爬是对这些机制的对策。`robots.txt`文件规定了网站可爬取的数据。基础爬虫示例使用Python的`urllib.request`模块。HTTP协议涉及请求和响应,包括状态码、头部和主体。`Requests`模块是Python中常用的HTTP库,能方便地进行GET和POST请求。POST请求常用于隐式提交表单数据,适用于需要发送复杂数据的情况。
9 1
|
1天前
|
存储 安全 Python
Python 遍历字典的这6种方法,你都掌握了吗
Python提供了多种遍历字典的方法,可以根据实际需要选择合适的方法。无论是需要单独访问键或值,还是同时需要键和值,Python的字典都提供了简单而有效的方式来处理这些需求。
|
4天前
|
机器学习/深度学习 人工智能 数据可视化
Python编程入门:从零开始探索编程的奇妙世界
这篇教程引导初学者入门Python编程,从安装Python开始,逐步讲解基本语法,如`print()`、变量、条件判断、循环以及自定义函数。文章强调了Python在数据处理、数据分析、人工智能和机器学习等领域的重要性,并鼓励学习者探索Python的广泛应用,开启编程之旅。
|
5天前
|
数据可视化 API Python
Python零基础“圣经”!300W小白从入门到精通首选!
今天分享的这本书在让你尽快学会 Python基础知识的同时,能够编写并正确的运行程序(游戏、数据可视化、Web应用程序) 最大的特色在于,在为初学者构建完整的 Python 语言知识体系的同时,面向实际应用情境编写代码样例,而且许多样例还是 后续实践项目部分的伏笔。实践项目部分的选题经过精心设计,生动详尽 又面面俱到。相信这本书能够得到更多 Python 初学者的喜爱。
小白入门必备!计算机科学教程的Python精要参考PDF开放下载!
随着互联网产业的高速发展,在网络上早已积累了极其丰富的Python学习资料,任何人都可以基于这些资源,自学掌握 Python。 但实际上,网络上充斥的资源太多、太杂且不成体系,在没有足够的编程/工程经验之前,仅靠“看”线上资源自学,的确是一件非常困难的事。
|
8天前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
8天前
|
Linux 开发工具 Python
初学者从无到有的Python语言如何入门,这份Python学习路线赶紧带走_python 从无到(1)
初学者从无到有的Python语言如何入门,这份Python学习路线赶紧带走_python 从无到(1)
初学者从无到有的Python语言如何入门,这份Python学习路线赶紧带走_python 从无到(1)
|
8天前
|
Java 程序员 C语言
2024年Python最新【Python学习教程】Python类和对象_python中类和对象的讲解,Python最新面试题
2024年Python最新【Python学习教程】Python类和对象_python中类和对象的讲解,Python最新面试题
2024年Python最新【Python学习教程】Python类和对象_python中类和对象的讲解,Python最新面试题
|
8天前
|
数据采集 Python
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
|
8天前
|
程序员 PHP Python
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php