iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一文带你弄懂Python3中的def __init__
  • 915
分享到

一文带你弄懂Python3中的def __init__

python3 def __init__python  def __init__def_init_ 2022-12-08 20:12:58 915人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言第一种定义方式如下:第二种定义方式如下:总结前言 在学习python-100-days时,在面向对象编程基础的那一块,封装一个class时,突然出现def __init__的

前言

学习python-100-days时,在面向对象编程基础的那一块,封装一个class时,突然出现def __init__的方法,刚开始时,对他的理解很模糊,为什么定义一个类需要用到def __init__

于是翻找了一些资料,大概就是两种定义方式如下:

第一种定义方式如下:

class Student(object):

    # __init__是一个特殊方法用于在创建对象时进行初始化操作
    # 通过这个方法我们可以为学生对象绑定name和age两个属性
    def __init__(self, name, age):
        self.name = name
        self.age = age

上面这一种,是在学习Python-100-days时,里面的一种定义方式。里面是包含两个参数 nameage。在实例的时候,必须要传入这两个参数的值进去。

stu = Student() # 报错

如果上面直接实例它的话就会报错:TypeError missing 2 required positional arguments: 'name' and 'age'

正常情况下,我们应该传入参数:

stu = Student('大冰', 19) # 正常实例

然后我们可以利用__dict__方法查看对象的属性。

print(stu.__dict__) # 打印出: {'name': '大冰', 'age': 19}

或者我们可以直接给__init__方法设置一个默认参数,然后直接实例就不会报错了。

def __init__(self, name = '周星星', age = 12):
	self.name = name
	self.age = age

stu = Student() # 不会报错,正常实例

第二种定义方式如下:

class Student(object):
	def __init__(self):
        self.name = None
        self.age = None

以第一种的区别,这种定义方式时,没有形参的。但是它已经指定nameage都是 None, 相当于这两个参数已经赋值,不过是None

这种形式是可以直接实例对象,然后再给对象里的属性赋值:

stu = Student() # 正常实例
"""查看stu对象的属性是什么状态"""
print(stu.__dict__) # 打印出:{'name': None, 'age': None}

然后再来重新给对象的属性赋值:

stu.name = '陈冠希'
stu.age = 16

以上就是__init__方法定义的一些区别。

那么为什么在class中 要定义__init__方法呢?因为他是一个初始化方法,没有初始化的话,实例后的对象,用__dict__方法查看对象里面的属性将是空的。

总结

到此这篇关于通过一文带你弄懂python3中的def __init__的文章就介绍到这了,更多相关Python3的def __init__内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 一文带你弄懂Python3中的def __init__

本文链接: https://www.lsjlt.com/news/174305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文带你弄懂Python3中的def __init__
    目录前言第一种定义方式如下:第二种定义方式如下:总结前言 在学习python-100-days时,在面向对象编程基础的那一块,封装一个class时,突然出现def __init__的...
    99+
    2022-12-08
    python3 def __init__ python  def __init__ def_init_
  • 一文带你弄懂Flutter的热部署
    关于Dart中的运行方式JIT:Just In Time . 动态解释,一边翻译一边执行,也称为即时编译,如JavaScript,Python等,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但是运行速度和性能则会受到影响,Fl...
    99+
    2023-05-14
    Dart Flutter
  • 一文带你弄懂Java中线程池的原理
    目录为什么要用线程池线程池的原理ThreadPoolExecutor提供的构造方法ThreadPoolExecutor的策略线程池主要的任务处理流程ThreadPoolExecuto...
    99+
    2022-12-08
    Java线程池原理 Java线程池
  • 一文带你搞懂Python中的pyc文件
    目录pyc 文件的触发pyc 文件的导入pyc 文件包含的内容pyc 文件的写入字节码混淆pyc 文件的触发 上一篇文章我们介绍了字节码,当时提到,py 文件在执行的时候会先被编译成...
    99+
    2022-12-28
    Python pyc文件写入 Python pyc文件 Python pyc
  • 一文带你读懂MyBatis中的参数
    一文带你读懂MyBatis中的参数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言相信很多人可能都遇到过下面这些异常:"Parameter 'xxx'...
    99+
    2023-05-31
    mybatis
  • 一文带你读懂Java中的Character类
    这期内容当中小编将会给大家带来有关一文带你读懂Java中的Character类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用字符时,我们通常使用的是内置数据类型char。实例char ch = ...
    99+
    2023-05-31
    java character类 ava
  • 一文带你读懂Java中的IO流
    一文带你读懂Java中的IO流?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、IO解决问题解决设备与设备之间的数据传输问题,比如 硬盘—->内存 内存—–>硬...
    99+
    2023-05-31
    java io流 ava
  • 一文带你搞懂Java中的递归
    目录概述递归累加求和计算1 ~ n的和代码执行图解递归求阶乘递归打印多级目录综合案例文件搜索文件过滤器优化Lambda优化概述 递归:指在当前方法内调用自己的这种现象。 递归的分类:...
    99+
    2022-11-13
    Java 递归
  • 一文带你读懂Java中的枚举
    这期内容当中小编将会给大家带来有关一文带你读懂Java中的枚举,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。enum 的全称为 enumeration, 是 JDK 5  中引入的新特性,存放在...
    99+
    2023-05-31
    java 枚举 ava
  • 一文带你搞懂Java8的LocalDateTime
    目录前言LocalDateTime获取当前时间获取当前时间的年月日时分秒给LocalDateTime赋值时间与字符串相互转换时间运算:加上对应时间时间运算:减去对应时间两个时间比较利...
    99+
    2023-05-14
    Java8 LocalDateTime使用 Java8 LocalDateTime
  • 一文带你看懂 Web Worker
    以前我们总说,JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在HTML5提供了我们前端开发这样的能力 - Web ...
    99+
    2023-06-02
  • 一文带你搞懂Vue中Vuex的使用
    目录VUEX使用详解01-vuex基础-介绍02-vuex基础-初始化和基本使用03-vuex基础-state04-vuex基础-mutations05-vuex基础-actions...
    99+
    2022-11-13
    Vue Vuex使用 Vuex使用 Vue Vuex
  • 一文带你看懂VueHook和ReactHook
    目录react Hookreact Hook demovue Hookvue hook demoreact Hook 和 vue Hook 的区别react Hook React H...
    99+
    2023-05-18
    JavaScript Vue Hook和React Hook Vue Hook和React Hook
  • 一文带你彻底搞懂Vuex
    大家可以思考一下,组件之间的传值有哪些?有父子通讯,兄弟组件通讯......但是传参对于多层嵌套就显得非常繁琐,代码维护也会非常麻烦。因此vuex就是把组件共享状态抽取出来以一个全局单例模式管理,把共享的数据函数放进vuex中,任何组件都可...
    99+
    2022-11-22
    Vue vue3 vue.js VueX
  • 一文带你读懂java中的希尔排序
    这期内容当中小编将会给大家带来有关一文带你读懂java中的希尔排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。希尔排序:通过比较相距一定间隔的元素来工作;各趟比较所用的距离(增量)随着算法的进行而减小,...
    99+
    2023-05-31
    java 希尔排序 ava
  • 一文带你读懂java中的对象拷贝
    本篇文章为大家展示了一文带你读懂java中的对象拷贝,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java对象拷贝详解及实例Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是...
    99+
    2023-05-31
    java 对象拷贝 ava
  • 一文带你读懂Java中的反射机制
    本篇文章为大家展示了一文带你读懂Java中的反射机制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是反射机制反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且...
    99+
    2023-05-31
    java 反射机制 ava
  • 一文带你搞懂JavaScript中数组的特性
    目录前言基本介绍数组类型和判断判断为数组的方式数组索引值和长度索引值是字符串length属性数组的最大长度创建数组的三种方式数组字面量语法Array构造函数Array.of()空位(...
    99+
    2023-05-17
    JavaScript数组特性 JavaScript数组
  • 一文带你快速读懂Java中的异常
    这篇文章给大家介绍一文带你快速读懂Java中的异常,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是异常?异常是Java语言中的一部分,它代表程序中由各种原因引起的“不正常”因素。 那么在程序中什么样的情况才算不正常...
    99+
    2023-05-31
    java ava
  • 一文带你读懂SpringBoot中的事务管理
    一文带你读懂SpringBoot中的事务管理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Springboot内部提供的事务管理器是根据autoconfigur...
    99+
    2023-05-31
    springboot bo 事务管理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作