zoukankan      html  css  js  c++  java
  • 元类实现单例

    单例1:元类的单例

     1 import settings
     2 
     3 
     4 class Mymeat(type):
     5     调用__init__得到Mysql调用之前的时候就有一个默认的实例化的结果
     6     def __init__(self, class_name, class_bases, class_dic):
     7          创建一个初始化的对象,并把这个对象保存下来
     8         self.__instance = self.__new__(self)
     9          初始化对象的属性就是文件中的数据
    10         self.__init__(self.__instance, settings.IP, settings.PORT)
    11          继承子类的属性
    12         super(Mymeat, self).__init__(class_name, class_bases, class_dic)
    13 
    14      调用__call__的方法就是自定义Mysql这个对象的调用过程要怎么实现
    15     def __call__(self, *args, **kwargs):    # self=Mysql
    16         if len(args) == 0 and len(kwargs) == 0:  判断是否传了参数,没传参就返回准备好的实例化对象,就是'文件对象'
    17             return self.__instance
    18         否则就重新实例化一个新的对象(包括属性,返回这个对象)
    19         obj = self.__new__(self)
    20         self.__init__(obj, *args, **kwargs)
    21         return obj
    22 
    23 
    24  自定义一个元类
    25 class Mysql(object, metaclass=Mymeat):
    26 
    27     def __init__(self, ip, port):
    28         self.ip = ip
    29         self.port = port
    30 
    31 
    32 obj1 = Mysql()
    33 obj2 = Mysql()
    34 obj3 = Mysql()
    35 obj4 = Mysql('100.100.100.11', 3320)
    36 print(obj1.__dict__)
    37 print(obj2.__dict__)
    38 print(obj3.__dict__)
    39 print(obj4.__dict__)
  • 相关阅读:
    大三学习进度55
    大三学习进度56
    深入理解Java:注解(Annotation)自定义注解入门
    Django2实战示例 第三章 扩展博客功能
    Django2实战示例 第二章 增强博客功能
    12月07日总结观影数据集之大数据分析数据清洗
    12月06日总结
    12月04日阅读笔记
    12月03日总结
    12月05日总结
  • 原文地址:https://www.cnblogs.com/jkeykey/p/11814219.html
Copyright © 2011-2022 走看看