python 析构函数 实例析构 类析构

Posted yuanjiangw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 析构函数 实例析构 类析构相关的知识,希望对你有一定的参考价值。

 

 

#!python
# -*- coding:utf-8 -*-
# 目的:通过单例实现客户端调用sdk时的批处理

# 参考:
#
# Python单例模式(Singleton)的N种实现 - 知乎
# https://zhuanlan.zhihu.com/p/37534850

# 设计模式(Python)-单例模式 - 简书
# https://www.jianshu.com/p/ec6589e02e2f

# PythonDecoratorLibrary - Python Wiki
# https://wiki.python.org/moin/PythonDecoratorLibrary

# 3. Data model — Python 3.7.3 documentation
# https://docs.python.org/3/reference/datamodel.html#object.__new__
#
#
# 注意:
# 线程安全

class SdkSingletonLoger(object):
__instance = None
# 存放批处理的队列 先进先出FIFO
queue = []
queueLength = None

def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls, *args, **kwargs)
if cls.queueLength is None:
cls.queueLength = 50
if len(cls.queue) >= cls.queueLength:
print "batchHandler"
print len(cls.queue)
print cls.queueLength
return cls.__instance


i = 0

t = (i, 333, )
i += 1
s1 = SdkSingletonLoger()
s1.queue.append(t)
# s1.queueLength = 2
s1.__class__.queueLength = 2
t = (i, 333, )
i += 1
s2 = SdkSingletonLoger()
s2.queue.append(t)

t = (i, 333, )
i += 1
s3 = SdkSingletonLoger()
s3.queue.append(t)

t = (i, 333, )
i += 1
s4 = SdkSingletonLoger()
s4.queue.append(t)

dd = 9




0
50
1
2
batchHandler
2
2
batchHandler
3
2

 

#!python
# -*- coding:utf-8 -*-
# 目的:通过单例实现客户端调用sdk时的批处理

# 参考:
#
# Python单例模式(Singleton)的N种实现 - 知乎
# https://zhuanlan.zhihu.com/p/37534850

# 设计模式(Python)-单例模式 - 简书
# https://www.jianshu.com/p/ec6589e02e2f

# PythonDecoratorLibrary - Python Wiki
# https://wiki.python.org/moin/PythonDecoratorLibrary

# 3. Data model — Python 3.7.3 documentation
# https://docs.python.org/3/reference/datamodel.html#object.__new__
#
#
# 注意:
# 线程安全

class SdkSingletonLoger(object):
__instance = None
# 存放批处理的队列 先进先出FIFO
queue = []
queueLength = None

def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls, *args, **kwargs)
if cls.queueLength is None:
cls.queueLength = 50
if len(cls.queue) >= cls.queueLength:
print "batchHandler"
print len(cls.queue)
print cls.queueLength
return cls.__instance


i = 0

t = (i, 333, )
i += 1
s1 = SdkSingletonLoger()
s1.queue.append(t)
s1.queueLength = 2
# s1.__class__.queueLength = 2
t = (i, 333, )
i += 1
s2 = SdkSingletonLoger()
s2.queue.append(t)

t = (i, 333, )
i += 1
s3 = SdkSingletonLoger()
s3.queue.append(t)

t = (i, 333, )
i += 1
s4 = SdkSingletonLoger()
s4.queue.append(t)

dd = 9

0
50
1
50
2
50
3
50

 

技术图片

 

Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32

 

以上是关于python 析构函数 实例析构 类析构的主要内容,如果未能解决你的问题,请参考以下文章

类析构函数符号有啥问题?在vc++中

基类析构函数为虚函数

C++ 构造函数不能是虚函数,基类析构函数应该为虚函数

访问冲突 - 为啥基类析构函数被调用两次? [关闭]

如何调用类析构函数/构造函数

条款7:为多态基类析构函数声明为virtual