__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__
方法联系起来:
__new__
方法就像你在工作台上准备一个全新的鞋子的模型(原型)。__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 赞同视频编辑https://www.zhihu.com/zvideo/1450605660416794624
600集Python教程:340集 包,封装模块、设置__init__外界导入包https://www.zhihu.com/zvideo/1363503472701140993