Python对象管理 or 魔术方法

Python对象管理 

    new方法

    ___new__方法用于定义创建对象时执行的操作

     __new__方法仅仅为用户提供一个创建对象时干预的入口,真正执行创建对象的操作由object类中的__new__方法完成。

    object类中的new方法完成对象创建过程中的内存空间申请,对象属性初始化等一系列的操作。

new方法创建对象自动运行,无需手动执行调用该方法 

def __new__(cls, *args, **kwargs):
    # 用户自定义的操作内容
    # 创建对象由object完成,需要指定创建类的名称
    return instance

 

对象的删除

del操作?

del 操作的实质是断开变量与内存数据之间的引用,操作del执行后等同于对应变量未进行过定义。

删除定义的变量:功能等同于变量未定义

    a = 100

    del a

 

删除存储模型中的数据:将数据按照变量的形式看待,功能等同于定义过对应的数据

元组对象的数据不支持del操作

删除对象的属性:对应对象等同于该对象未定义过该属性

__del__方法作用

用于定义某个对象不被任何变量所引用时,该对象执行的操作。

__del__方法仅仅是python开放出来给用户干预删除对象时的一个操作入口,该方法并不是直接完成删除对象的操作,删除对象的操作由垃圾回收机制统一管理

 

__del__方法执行范围

    当手工执行断开变量与对象的最后一个引用时执行,即del操作

    当程序执行完毕时,所有变量对应的引用都断开,此时执行,即退出程序

 

对象判等

当两个对象对应的引用地址相同时,称这两个对象是同一个对象

is操作

     判读两个对象是否相同

重要内容:⚠

    == 判读内容(值)

    is 判断引用(地址)

    返回值为bool型

    切记?

  • ==操作针对判定的内容不同,规则不同。例如数值性数据比较数值的大小,不考虑是整数还是小数。字符串比较字符串的内容是否相同,不考虑引用地址是否相同。

  • is操作只针对地址进行判定,只要地址相同即返回True,否则返回False

 

单例模式

    单例模式即控制一个类只产生一个对象

class 类名:

    __instance = None

    def __new__(cls, *args, **kwargs):
        if cls.__instance is None:
            cls.__instance = object.__new__(类名)
        return cls.__instance

 

1.定义的类变量要进行私有化,否则可以通过类名在类的外部访问到

2.对象的判空操作使用is进行判定

 

单例模式案例

class Teacher:
    instance = None

    def __new__(cls, *args, **kwargs):
        """单例模式"""
        if cls.instance is None:
            cls.instance = object.__new__(Teacher)
        return cls.instance


t1 = Teacher()
t2 = Teacher()
t3 = Teacher()
print(id(t1))
print(id(t2))
print(id(t3))

 

 

 

 

exit(✔)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值