鱼C论坛

 找回密码
 立即注册
查看: 3021|回复: 3

__init__和__new__魔法方法的疑惑?

[复制链接]
发表于 2021-3-25 13:43:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
《零基础入门pyhton》课程第41讲,测试题答案中:

1. 类实例化对象所调用的第一个方法是什么?
答:__new__ 是在一个对象实例化的时候所调用的第一个方法

2. 什么时候我们需要在类中明确写出 __init__ 方法?
答:当我们的实例对象需要有明确的初始化步骤的时候,你可以在 __init__ 方法中部署初始化的代码。
举个例子:
# 我们定义一个矩形类,需要长和宽两个参数,拥有计算周长和面积两个方法。
# 我们需要对象在初始化的时候拥有“长”和“宽”两个参数,因此我们需要重写__init__方法
# 因为我们说过,__init__方法是类在实例化成对象的时候首先会调用的一个方法,大家可以理解吗?
Question1:
对象实例化和实例化为对象这俩个概念有什么区别吗?
-----------------------------------------------------------------------------------------------
https://blog.csdn.net/Babysister ... LearnPai2-1.control
概括:简言之,_new_作用于_init_之前。前者可以决定是否调用后者,或者说可以决定调用哪个类的_init_方法。
解释一:首先要知道在面向对象编程中,实例化基本遵循创建实例对象、初始化实例对象、最后返回实例对象这么一个过程。Python 中的 _new_ 方法负责创建一个实例对象,_init_ 方法负责将该实例对象进行初始化;​
解释二:有人说如果将类比喻为工厂,那么_init_方法则是该工厂的生产工人,_init_方法接受的初始化参数则是生产所需原料,_init_方法会按照方法中的语句负责将原料加工成实例以供工厂出货。而_new_则是生产部经理,_new_方法可以决定是否将原料提供给该生产部工人,同时它还决定着出货产品是否为该生产部的产品,因为这名经理可以借该工厂的名义向客户出售完全不是该工厂的产品
————————————————
版权声明:本文为CSDN博主「弓长张517」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Babysisterzh/article/details/54895351

Question2:
Python 中的 _new_ 方法负责创建一个实例对象,_init_ 方法负责将该实例对象进行初始化,这句话要怎么理解呢?








小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表