美文网首页
python的魔术方法(一)__init__与__new__

python的魔术方法(一)__init__与__new__

作者: 小小测试 | 来源:发表于2021-12-24 00:00 被阅读0次

魔法方法: 是类里面的一些特殊方法,用__形式,像__init__,它可以在特定的时机自动触发,通过魔术方法,我们可以定义类自己想要的行为

# python魔术方法:

"""

__init__: 初始化魔术方法,最常见的方法

作用:给对象添加所属成员

触发:实例化对象之后触发(实例对象创建完成后,会把对象传到__init__方法里面)

self含义:就是指对象本身(可以打印self与对象查看,内存地址是一致的)

"""

class Man:

    def __init__(self,name,age):

        print(self)  # 打印查看self含义

        print("执行初始化方法")

        self.sex = "男"

        self.age = age

        self.name = name

    def sleep(self):

        print("睡觉")

one = Man("pp")

print(one)

print(one.__dict__)

"""

__new__: 创建对象的魔术方法

作用:管理和控制对象的生成

触发:实例化对象时触发

cls含义:就是指当前类对象(在__new__里面表示要创造哪个类的实例对象),返回类对象的实例对象就是self,注意与self区别

"""

class Manty:

    def __new__(cls,sex):

        print(cls)

        print("执行创建对象方法")

        if sex == ("男",):

            print(222)

            return object.__new__(cls)

        if sex == "女":

            print(111)

            pass

    def sleep(self):

        print("睡觉")

one = Manty("男")

print(one)

print(one.__dict__)

"""

两则的区别:

1.

__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。

__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。

"""

相关文章

网友评论

      本文标题:python的魔术方法(一)__init__与__new__

      本文链接:https://www.haomeiwen.com/subject/ehakqrtx.html