Python×°ÊÎÆ÷
ÔÎÄ£ºhttp://www.klipdas.com/blog/?p=python-decorator
python×°ÊÎÆ÷½éÉÜ
Python 2.2ÖÐÒýÈëµÄ classmethod() ºÍ staticmethod() ÄÚÖú¯Êý£¬Äã¿ÉÒÔÕâÑùµ÷ÓÃclassmethod()£º
class A:
def foo(self, y):
print y
foo = classmethod(foo)
Ò²¿ÉÒÔÕâÑù£º
class A:
@classmethod
def foo(self, y):
print y
ËäÈ»classmethodÊÇÄÚÖú¯Êý£¬µ«ËüºÍÆÕͨµÄº¯ÊýûÓÐÁ½Ñù£¬Òò´ËÄãÒ²¿ÉÒÔ´´½¨×Ô¼ºµÄº¯Êýת»¯Âß¼£¬È磺
def mydecorator(func):
print 'mydecorator was called.'
func.name = 'myfun'
return func
¸ÃÐÞÊÎÆ÷½«ÉÔ΢ÐÞ¸ÄÁËÔº¯ÊýµÄÂß¼£ºÊ×ÏÈ´òÓ¡Ò»¶ÎÎÄ×Ö“mydecorator was called.”£¬È»ºó¸øÔº¯ÊýÌí¼ÓÁËÒ»¸önameÊôÐÔ£¬ÊôÐÔֵΪ"myfun"£¬Ö®ºóÔÙ½«º¯Êý·Å»Ø£¬Ê¹Ó÷½·¨ºÍµ÷Óýá¹ûÈçÏ£º
class A:
@mydecorator
def foo(self, y):
print y
if __name__ == '__main__':
a = A()
a.foo(1)
ÔËÐнá¹ûΪ£º
mydecorator was called.
1
ÒÔÉϼò½éÎÒÃÇ¿ÉÒÔ´óÖÂÁ˽âÁËpython×°ÊÎÆ÷µÄ×÷Óá£
×°ÊÎÆ÷µÄµ÷ÓÃÂß¼
ÈçÉÏÒ»½ÚµÄʾÀýÖÐÎÒÃÇ·¢ÏÖ£¬Ê¹ÓÃ×°ÊÎÆ÷µÄʱºòÊÇ@mydecorator£¬»òÕßÊÇfoo=mydecorator(foo)£¬¶ø²»ÊÇ@mydecorator()£¬»òÕßfoo=mydecorator(foo)()¡£ÏÔÈ»£¬ÎÒÃÇÒªµÄ×°ÊÎÆ÷ÊǸöº¯Êý£¬¶ø²»ÊǺ¯ÊýµÄ½á¹û¡£ÒòΪÎÒÃÇÒª½«ÎÒÃÇÒªÐÞÊεĺ¯Êýfoo£¨¼´ÀϺ¯Êý£©´«µÝ¸øÐÞÊκ¯Êýmydecorator£¬²¢ÇÒÐÞÊκ¯ÊýmydecoratorÒ²·µ»ØÒ»¸öк¯Êý£¨ÉÏÒ»µÄк¯ÊýÊÇÔÚÀϺ¯ÊýµÄ»ù´¡ÉÏÌí¼ÓÁËÒ»¸öÊôÐÔ£©¡£
´ø²ÎÊý×°ÊÎÆ÷
ÉÏÒ»½ÚµÄ½éÉÜ×°ÊÎÆ÷µÄµ÷Óùý³Ì£¬ÎÒÃÇ¿ÉÒÔÃ÷°×£¬@mydecoratorÊǸöº¯Êý£¬¶øÇÒÊǸöº¯Êý¾Í¿ÉÒÔ£¬Êµ¼ÊÉÏÊDZØÐëҪʵÏÖ__call__·½·¨µÄ¶ÔÏó¾Í¿ÉÒÔÁË¡£Ò²¾ÍÊÇ˵װÊÎÆ÷¿ÉÒÔ¶¨Òå³ÉʵÏÖÁË__call__·½·¨µÄclassÒ²¿ÉÒÔÊÇÆäËûµÄÈκηµ»Øº¯ÊýµÄ“¶ÔÏ󔣬ºóÕßʵÏֽϸ´ÔÓ£¬µ«¹¦ÄÜÇ¿´ó¡£
ʵÏÖ__call__·½·¨µÄclassʾÀý£º
class mydecorator:
def __init__(self, func):
self.func = func
def __call__(self):
print “mydecorator was called.”
return self.func
ʹÓ÷½·¨Í¬Ç°ÃæµÄʾÀýÒ»Ñù£¬ÒòΪÎÒÃÇ¿ÉÒÔÏñº¯ÊýÒ»Ñùµ÷ÓøÃÀࣺmydecorator()£¬²»Í¬µÄÊÇ£¬¸ÃÀàÊÇÒÔ±»×°Êεĺ¯Êý×÷Ϊ¹¹Ôì²ÎÊý£¬¶ø²»ÊÇ×÷Ϊ__call__µÄ²ÎÊý¡£¸ü¸´ÔÓµÄ×°ÊÎÆ÷£º
def mydecorator(arg):
print “arg is ”, arg
def newdec(func):
print ‘new decor
Ïà¹ØÎĵµ£º
ÕýÔÚÔĶÁ×îаæµÄ¡¶A byte of Python¡·¡£·¢ÏÖPython3.0ÔÚijЩµØ·½»¹ÊÇÓÐЩ¸Ä±äµÄ¡£×¼±¸ÂýÂýµÄÌå»á£¬ÓëÀϰ汾µÄ¡¶A byte of Python¡·×ö¶Ô±È£¬×îºóÔÙÈ¥²éÔĹٷ½ÍøÕ¾µÄÎĵµ¡£
1.
Èç¹ûÄãÏÂÔØµÄÊÇ×îаæµÄPython£¬¾Í»á·¢ÏÖËùÓÐÊéÖеÄHello WorldÀý×Ó½«²»ÔÙÕýÈ·¡£
Old:
print "Hello World!" #´òÓ¡×Ö·û´®
New:
......
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough t ......
Python , Delphi , Loki Èý¸öµ¥´ÊÓÐȤµÄÀ´Ô´
Ðí¶à³ÌÐòÉè¼ÆÓïÑԺͿª·¢¹¤¾ßÒÔ¼°¿âµÄÃû×Ö¶¼À´Ô´ÓëÉñ»°£¬ÆÄÓÐÒâ˼£º
°¢²¨ÂÞÊÇͬʱ³öÏÖÔÚÏ£À°ºÍÂÞÂíÉñ»°ÖеİÂÁÖÅÁ˹ʮ¶þ´óÉñÖ®Ò»¡£Ëû³ýÁËÓµÓÐÌ«ÑôÉñµÄÉí·Ö£¬Í¬Ê±»¹ÓÐÔ¤ÑÔ¡¢ÒÕÊõ¡¢Ò½ÊõÖ®ÉñµÄ³ÆºÅ¡£°¢²¨ÂÞÊÇÖæË¹ºÍÀÖ¶äµÄ¶ù×Ó£¬ºÍ°¢µÙÃÛ˹ÊÇË ......
PythonÇ¿µÄ¹¦ÄܾÍÔÚÓÚËüÎÞËù²»ÄÜ¡£
ʹÓÃwin32comÄ£¿é¿ª·¢window ActiveXµÄʾÀý£º£¨Èç¹ûÄ㻹ûÓÐ×°win32comÄ£¿éµÄ»°£¬Çëµ½http://python.net/crew/skippy/win32/Downloads.htmlÏÂÔØ£©¡£
# SimpleCOMServer.py
class PythonUtilities:
_public_methods_ = ['SplitString']
_reg_progid_ = "Python.Utilities"
......
2005-2006ѧÄêµÚ1ѧÆÚ
±à Òë Ô Àí
¿Î ³Ì Éè ¼Æ ±¨ ¸æ
°à¼¶ 02¼Æ(¶þ)
ѧºÅ 19
ÐÕÃû ÁõÏþÃ÷
³É¼¨
Ö¸µ¼½Ìʦ ¬³¯»Ô
Ò»¡¢ Éè¼ÆÄ¿µÄ
¼ÓÉî¶Ô±àÒ ......