ÁöÆòÆÄÀ̽㿡¼ ȸé ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» ½±°ÔÇϱâ | |
Áö±Ý ´Ù¿î·Îµå |
ÁöÆò ¼øÀ§ ¹× ¿ä¾à
±¤°í
ÁöÆò ű×
ÁöÆò ¼³¸í
PyAspects´Â Python Language¿¡¼ Aspect-Oriented ProgrammingÀ» ¿ÏÈ ÇÒ ¼öÀÖ´Â ÇÁ·ÎÁ§Æ®ÀÔ´Ï´Ù .Basic Usage "Weave"ÆíÀÇ ±â´ÉÀº ÀÏ¹Ý ±â´ÉÀ» »ç¿ëÇÏ¿© Ŭ·¡½º, °´Ã¼ ¶Ç´Â ¹æ¹ý¿¡ Ãø¸éÀ» Àû¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù .- Ŭ·¡½º¿Í ÇÔ²² »ç¿ëÇϸé Ŭ·¡½ºÀÇ ¸ðµç ¸Þ¼Òµå°¡ Â¥³»´Ù. ÀÌ·¸°ÔÇϸé Ŭ·¡½ºÀÇ ¸ðµç ÀνºÅϽº¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù .- °´Ã¼¿Í ÇÔ²² »ç¿ëµÉ ¶§ °´Ã¼ÀÇ ¸ðµç ¸Þ¼Òµå°¡ Á÷Á¶µË´Ï´Ù. ±×·¯³ª ÀÌ°ÍÀº µ¿ÀÏÇÑ Å¬·¡½ºÀÇ ´Ù¸¥ ¾î¶² ÀνºÅϽº¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù .- ¸Þ¼µå¿Í ÇÔ²² »ç¿ëÇÒ ¶§ ƯÁ¤ ¸Þ¼µå ¸¸ weavedµË´Ï´Ù. example : actemic.def¸¦ ¸¸µé±â my_before_func (wobj, data, * args, ** kwargs) : # wobj : ·¡ÇÎ µÈ # µ¥ÀÌÅÍ : Weaved ¸Þ¼Òµå # args¿¡ ´ëÇÑ Á¤º¸¸¦ ¾òÀ» ¼öÀÖ´Â aspectÀÇ µ¥ÀÌÅÍ : ¿ø·¡ ¸Þ¼Òµå # kwargs¿¡ Àü´Þ µÈ Àμö : ¿ø·¡ ¸Þ¼Òµå¿¡ Àü´Þ µÈ Å°¿öµå do_something () pyAspects.weave (some_object_class_or_method, before_func = my_before_func = myAspect (), myClass) pyAspects.weave_all_methods (myaspect (), myclass.my_method) pyAspects.weave_all_methods (myAspect) ), my_instance) pyaspects.weave_all_methods (myaspect (), my_instance.my_method) ¹æ¹ýÀÇ AdvicesWith ByShectsÀÇ À¯Çü .before ¹× ÈÄ¿¡ Á¶¾ð ÈÄ¿¡ ¶Ç´Â ´ë½Å¿¡ Á¶¾ðÀ» ÀüÈÄ¿¡ »ðÀÔ ÇÒ ¼ö ÀÖ½À´Ï´Ù. °³Ã¼ ¹× Àμö ¹æ¹ýÀÇ ½ÇÇà ÀüÈÄÀÇ ¹æ¹ý ¹× ½ÇÇà. ´Ù¸¥ ÇÑÆíÀ¸·Î´Â ¿øÇϴ´ë·Î Àü / ÈÄ Á¶¾ðÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ÇÑÆíÀ¸·Î´Â ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÁÖº¯ÀÇ Á¶¾ðÀÌ Á¦ÀÚ¸®¿¡¼ ½ÇÇàµÇ±â ¶§¹®¿¡ ¹Ýȯ °ªÀÌ ´ë½Å »ç¿ëµË´Ï´Ù. ±×·¯³ª Advice´Â metaAspectÀÇ ÁøÇà ¹æ¹ýÀ» »ç¿ëÇÏ¿© ¿ø·¡ÀÇ ¹æ¹ýÀ» È£Ãâ ÇÒ ¼ö ÀÖ½À´Ï´Ù. "µ¥ÀÌÅÍ"¿¡ÀÖ´Â Data Àμö´Â »çÀüÀ̸ç Weaved ¸Þ¼µå¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù .Data : ¸Þ¼µå À̸§ Weaving happens.data : Weaved ¸Þ¼Òµå À̸§. ÀÌ°ÍÀº ±âº»ÀûÀ¸·Î "ÁøÇà"¸Þ¼Òµå°¡ Aspect.Data : ¿ø·¡ ¹æ¹ýÀÇ ¹Ýȯ °ªÀ» È£ÃâÇÕ´Ï´Ù. ÀÌ°ÍÀº ¾ç¸é°ú ¾ç»óÀ» µÚ·Î ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (ÅëÈ°¡ ÁøÇàµÇ´Â °æ¿ì) .Data : ¸Þ¼Òµå°¡ ¼ÓÇÑ Å¬·¡½º °´Ã¼´Â »õ·Î¿î ¾ç¸é aspect¸¦ Á¤ÀÇÇÏ´Â °ÍÀÔ´Ï´Ù. ¿þÀ̺ê ÀüÈÄ¿¡ ½ÇÇàÇÒ ¸Þ¼µå¸¦ Á¦°ø ÇÒ ¼ö ÀÖ½À´Ï´Ù. methods.example : class testAspect : __metaclass__ = metaAspect name = "testAspect"def, (self, wobj, data, * args, ** kwargs) : "Å×½ºÆ® acture"Ŭ·¡½º MyAridAspect : __metaclass__ = metaaspect name = "myaround"def (ÀÚü, wobj, µ¥ÀÌÅÍ, * args, ** kwargs) : "ÁÖÀ§¸¦ ÁÖÀ§·Î) ÀμâÇϽʽÿÀ." ret = self.proceed (wobj, data, * args, ** kwargs) Àμâ "¹Ýȯ °ªÀ¸·Î ¹º°¡ ¼öÇà"RetroductÀÇ È¨ÆäÀÌÁö
ÁöÆò °ü·Ã ¼ÒÇÁÆ®¿þ¾î