首页 > Python中__new__方法应用
头像
菜牛程序媛
发布于 2022-04-11 22:38
+ 关注

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对象的引用地址

全部评论

(1) 回帖
加载中...
话题 回帖