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#
全部评论
https://gitee.com/y_project/RuoYi-Vue
点赞 回复 分享
发布于 2022-04-12 20:06

相关推荐

头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务