Python中的__new__(new函数)

1.魔术方法 :  系统的函数,函数名称为 __xxx__,如 __init__,__new__,__del__等

      __init__ : 可以定义一个对象的初始化操作,但是,__init__ 并不是第一个被自动调用的函数,实际上,还有一个                     __new__,    两个函数构成了“构造函数”

#  1. 只定义init
class Check1:
    # 构造函数
    # 1.init:self表示的当前类的实例【对象】
    def __init__(self):
        print("__init__函数被调用了")


c1 = Check1()
print(type(c1))
"""
__init__函数被调用了
<class '__main__.Check1'>
"""


class Check2:
    # 构造函数
    # 1.init:self表示的当前类的实例【对象】
    def __init__(self):
        print("__init__函数被调用了")

    # 2.new: cls 表示的当前类
    def __new__(cls, *args, **kwargs):
        print("__new__被调用了")
        '''创建对象'''
        return super(Check2, cls).__new__(cls, *args, **kwargs)


c2 = Check2()
print(type(c2))
"""
__new__被调用了
__init__函数被调用了
<class '__main__.Check2'>
"""

"""
    对照代码和打印结果可知
    如果类中只定义了init, 则创建对象的时候默认第一个调用init函数
    如果类中同时定义了init和new,则创建对象的时候只会调用new函数
    
    注意:
        一般情况下,使用init较多,如果使用了new函数,
            那么则不要使用init【如果要使用init,则init不能设置参数】

    实际上的,是先调用new,然后再调用init
"""

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值