Python中 __init__的通俗解释是什么?

__init__ 方法:

    • __init__ 是在对象已经被创建之后调用的方法。
    • 它用于初始化对象的属性和状态。
    • 在 __init__ 方法中,第一个参数是 self,代表当前对象实例,后面跟着其他构造函数所需的参数。
    • __init__ 中,你可以对对象的属性进行赋值,进行一些初始化操作,以确保对象在被创建后处于正确的状态。

示例:

class MyClass:
    def __new__(cls, *args, **kwargs):
        print("这是__new__方法")
        instance = super().__new__(cls)
        # 可以在这里自定义对象的创建过程
        return instance

    def __init__(self, value):
        print("这是__init__方法")
        self.value = value
        # 在这里初始化对象的属性


obj = MyClass(10)

运行结果:

这是__new__方法
这是__init__方法

总结:

  • __new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供。
  • __new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例。
  • __init__有一个参数self,就是这个__new__返回的实例,__init____new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值。

简而言之,__new__是用于创建对象实例,而__init__是用于初始化这个实例的属性。

如果上述内容看不懂,没关系,我们用大白话来一遍

假设你是一位制鞋工匠,你手工制作定制鞋子。现在,让我们把制作鞋子的过程与__new____init__方法联系起来:

  1. __new__ 方法就像你在工作台上准备一个全新的鞋子的模型(原型)。
  2. __init__ 方法就像你在模型上工作,根据客户的要求(传递给你的参数)来制作每双鞋子。

下面是一个简化的示例:

class ShoeMaker:
    def __new__(cls, size, style):
        # 创建一个新鞋子模型(空白的鞋子)
        new_shoe = super(ShoeMaker, cls).__new__(cls)
        return new_shoe

    def __init__(self, size, style):
        # 在模型上工作,定制每双鞋子
        self.size = size
        self.style = style

# 制作两双不同尺寸和风格的鞋子
shoe1 = ShoeMaker(8, "运动鞋")
shoe2 = ShoeMaker(10, "皮鞋")

# 每双鞋子都有不同的尺寸和风格
print(shoe1.size, shoe1.style)  # 输出: 8 运动鞋
print(shoe2.size, shoe2.style)  # 输出: 10 皮鞋

在这个示例中,__new__方法创建一个新的鞋子模型(new_shoe),而__init__方法用于在模型上工作,根据传递给它的参数来定制每双鞋子的尺寸和风格。


课程分享!

04-魔法方法__init__的使用【掌握】720 播放 · 0 赞同视频​编辑​icon-default.png?t=N7T8https://www.zhihu.com/zvideo/1450605660416794624

600集Python教程:340集 包,封装模块、设置__init__外界导入包icon-default.png?t=N7T8https://www.zhihu.com/zvideo/1363503472701140993

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值