| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- """
- -------------------------------------------------
- File Name: utilClass.py
- Description : tool class
- Author : JHao
- date: 2016/12/3
- -------------------------------------------------
- Change Activity:
- 2016/12/3: Class LazyProperty
- -------------------------------------------------
- """
- __author__ = 'JHao'
- class LazyProperty(object):
- """
- LazyProperty
- explain: http://www.spiderpy.cn/blog/5/
- """
- def __init__(self, func):
- self.func = func
- def __get__(self, instance, owner):
- if instance is None:
- return self
- else:
- value = self.func(instance)
- setattr(instance, self.func.__name__, value)
- return value
- class Singleton(type):
- """
- Singleton Metaclass
- """
- _inst = {}
- def __call__(cls, *args, **kwargs):
- if cls not in cls._inst:
- cls._inst[cls] = super(Singleton, cls).__call__(*args)
- return cls._inst[cls]
|