Python 每日随笔
使用python已经有3个月了,带总体来说,还是python菜鸟,今天发现了一个好玩的东西,记录下来,有时间深入研究一下。
关于Metaclass
不得不说python 的元类很有意思,可以做很多有趣的事情,如:
1 可以做log记录,性能分析
2 可以为创建的类添加功能
3 为子类做类型校验等。
上代码:
# -*- coding: utf-8 -*-
import time
class MyMetaclass(type):
	‘’‘
	元类,负责创建子类
	’‘’
	def __new__(cls, name, bases, attrs):
		if attrs.has_key('culaPI'):
			#为了culaPI 方法包装性能统计代码
			def warper(fun):
				def _(*k, **kw):
					startTime = time.time()
					result = fun(*k, **kw)
					endTime = time.time()
					print "%s 共计耗时:%.4fs" %( fun.__name__,  (endTime - startTime))#, startTime, endTime
					return result
				return _
			attrs['culaPI'] = warper(attrs['culaPI'])
			
		return type.__new__(cls, name, bases, attrs)
class Person:
	__metaclass__ = MyMetaclass
	
	def __init__(self, name, age):
		self.name = name
		self.age = age
	def culaPI(self, name):
		time.sleep(2)
a = Person("san", 20)
a.culaPI("Zzzzz...")
                    
                
                
            
        
浙公网安备 33010602011771号