首页 > 其他 > 详细

产生的对象的方式__new__与单例模式

时间:2019-12-11 17:10:27      阅读:118      评论:0      收藏:0      [点我收藏+]

1.产生对象的原理      __new__ 方法

class testclass:
    #类内部在new一个对象之前默认生成一个空的对象(内存空间),然后再调用__init__
    def __new__(cls, *args, **kwargs):   # 声明:python __new__ 为类中的静态方法
        return object.__new__(cls)   #通过object的new方法把本类作为参数去创建一个空对象
    def __init__(self,name):

        self.name = name

obj = testclass(egon)
print(obj.name)    #  egon

2. 基于__new__的单例模式

#  基于__new__的单例模式
class sington:
    _instance = None
    def __new__(cls, *args, **kwargs):   # Python的实现机制 __new__ 为类中的静态方法
        if not cls._instance:            # 静态方方法
            cls._instance = object.__new__(cls)
            return  cls._instance

obj1 = sington()
obj2 = sington()
# print(sington)   # <class ‘__main__.sington‘>
# print(sington.__class__)  #<class ‘type‘>
# print(sington)   # <class ‘__main__.sington‘>
print(sington.__dict__)  # 打印类的名称空间

print(obj1.__dict__)   # 打印对象的名称空间
print(obj1.__class__)  # 打印对象的类
print(obj1.__class__.__name__)  # 打印对象的类名

产生的对象的方式__new__与单例模式

原文:https://www.cnblogs.com/bigbox/p/12023627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!