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(✔)