Python中__new__方法应用
class A(object):
def __new__(cls, age): # cls保存当前内对象的引用地址
"""应用:控制对象生成"""
# 对父类object中__new__方法进行重写扩展
# 如果年龄满18岁,无法创建对象,初始化方法无法运行
if age >= 18:
pass
else:
return super().__new__(cls)
# 调用父类中的__new__方法:1给对象分配内存空间2返回对象内存空间的引用地址3将对象的引用地址传递给__init__方法中的self参数
def __init__(self, age):
self.age = age
print("年龄为%s初始化方法运行" % self.age)
# 创建实例对象时自动调用__new__、__init__方法
# __new__方法无需定义,默认继承object类
a = A(77) # 创建对象将77传给__new__方法中的age
print(a) # 打印对象结果为None,获取不到a对象的引用地址
b = A(17)
print(b) # 打印对象结果为:
# 年龄为17初始化方法运行
# <__main__.A object at 0x00000201E1BBD320>
# 获取到a对象的引用地址
#python##GE#