类的特殊方法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学习站官方技术圈!

相关文章
|
6月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
778 7
|
7月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
532 1
|
7月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1123 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
6月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
1283 1
Python API接口实战指南:从入门到精通
|
6月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1138 1
|
7月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
407 5
|
7月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
7月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
224 0
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1105 102
|
7月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
441 104

推荐镜像

更多
下一篇
开通oss服务