7.2. º¯¼ö¿Í ¸Þ½îµå

(¾´ ³¯ : 2001-06-27)

¾È³çÇϼ¼¿ä~

Á¤~¸» Á¤~¸» ¹Ý°¡¿ö¿ä~

¹ú½á Áö³­ °­Á¸¦ ¿Ã¸° Áö ¿­ÈêÀÌ Áö³ª¹ö·È³×¿ä.

ÀÌ·±Àú·± ÀϵéÀÌ »ý±â´Â ¹Ù¶÷¿¡¡¦ ¸¹ÀÌ ±â´Ù¸®½Ã°Ô ÇØ¼­ Á˼ۡ¦

 

Áö³­ ½Ã°£¿¡ Ŭ·¡½º¿Í °´Ã¼°¡ ¹«¾ùÀÎÁö Àá±ñ »ìÆìº¸¾ÒÁÒ?

½ÇÁ¦ ¼¼°è¿¡ Á¸ÀçÇÏ´Â ½Çü(instance)¸¦ °´Ã¼(object)¶ó°í Çϰí, °´Ã¼µéÀÇ °øÅëÁ¡À» °£Ãß·Á¼­ °³³äÀûÀ¸·Î ³ªÅ¸³½ °ÍÀÌ Å¬·¡½º(class)¶ó°í Çß½À´Ï´Ù.

¾î¶² Ŭ·¡½º¸¦ ¸¸µå·Á¸é ±× °´Ã¼°¡ °®´Â ¼ºÁú°ú ±× °´Ã¼°¡ ÇÏ´Â ÇൿÀ» Á¤ÀÇÇØÁÖ¸é µÈ´Ù°íµµ Çß±¸¿ä.

¿äÁò ¸¹ÀÌ ÇϽô µð¾Æºí·ÎII °ÔÀÓÀÇ ¾Æ¸¶Á¸À̶õ ij¸¯Å͸¦ Ŭ·¡½º·Î Ç¥ÇöÇØ º¼±î¿ä?

 

class Amazon:

    str = 20           # Èû

    dex = 25           # ±â¼ú

    vit = 20           # ü·Â

    eng = 15           # ¿¡³ÊÁö

 

    def attack(self):  # °ø°ÝÇÏ´Ù

        return 'Jab!!!'

 

¾Æ¸¶Á¸ Ŭ·¡½º°¡ °®°í ÀÖ´Â ¡®Èû¡¯, ¡®±â¼ú¡¯, ¡®Ã¼·Â¡¯, ¡®¿¡³ÊÁö¡¯¶ó´Â ³× °¡Áö ¼ºÁúÀº º¯¼ö·Î ³ªÅ¸³»¾ú±¸¿ä, ¡®°ø°ÝÇÏ´Ù¡¯¶ó´Â ÇൿÀº ¸Þ½îµå·Î ³ªÅ¸³»¾ú½À´Ï´Ù.

 

Àü¿¡ °øºÎÇß´ø ¸ðµâµµ º¹½ÀÇÒ °â ¸Þ¸ðÀåÀ¸·Î ÀÛ¼ºÇϼż­ diablo.py¶ó´Â ÆÄÀÏ·Î ÀúÀåÇØÁÖ¼¼¿ä.

ÀÌÁ¦ ¾Æ·¡¿Í °°ÀÌ diablo ¸ðµâÀ» ºÒ·¯µéÀÎ ´ÙÀ½¿¡,

 

>>> import sys

>>> sys.path.append('c:/python21/exam')

>>> import diablo

 

Amazon Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¸¸µé¾î º¾½Ã´Ù.

 

>>> jane = diablo.Amazon()

>>> mary = diablo.Amazon()

 

µÎ ¸íÀÇ ¿©Àü»ç°¡ ź»ýÇß½À´Ï´Ù. Â¥ÀÜ~

jane°ú mary´Â µÑ ´Ù AmazonÀ¸·Î¼­ ÇÊ¿äÇÑ ÀÚÁúÀ» ¸ðµÎ °®Ãß°í ÀÖ°ÚÁÒ?

±×·¸´Ù¸é janeÀÇ Èûµµ, °ø°ÝÇÏ´Â Çൿµµ Amazon Ŭ·¡½º¿¡¼­ Á¤ÀÇÇÑ ±×´ë·ÎÀ̰ڱ¸¿ä.

 

>>> jane.str

20

>>> jane.attack()

'Jab!!!'

 

ÀÌ·¸°Ô °´Ã¼´Â Ŭ·¡½º¿¡¼­ Á¤ÀÇÇØÁØ º¯¼ö¿Í ¸Þ½îµå¸¦ ±×´ë·Î °®°Ô µË´Ï´Ù.

º°·Î ¾î·ÆÁö ¾ÊÁÒ?

 

¿©±â¼­ ÁÖÀÇÇØ¼­ º¸½Ç °ÍÀº ¸Þ½îµå¸¦ Á¤ÀÇÇÒ ¶§¿Í »ç¿ëÇÒ ¶§´Â Â÷À̰¡ ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù.

Amazon Ŭ·¡½º¿¡¼­ ¸Þ½îµå¸¦ Á¤ÀÇÇÒ ¶§´Â def attack(self):¿Í °°ÀÌ self¶ó´Â ÀÎÀÚ¸¦ ¹Þ¾Ò´Âµ¥, jane °´Ã¼ÀÇ ¸Þ½îµå¸¦ È£ÃâÇÒ ¶§´Â ±×³É attack()À̶ó°í ÇßÁö¿ä?

 

self¶ó´Â °ÍÀº ¹Ù·Î ±× Ŭ·¡½ºÀÇ °´Ã¼¸¦ °¡¸®Å°´Âµ¥, jane°ú mary°¡ ¶È °°Àº attack ¸Þ½îµå¸¦ °¡Áö±â ¶§¹®¿¡ ¼­·Î ±¸º°Çϱâ À§Çؼ­ »ç¿ëÇÑ °ÍÀÔ´Ï´Ù.

ÇÑ ¸¶µð·Î ¸Þ½îµå¸¦ Á¤ÀÇÇÒ ¶§´Â Ç×»ó self¶ó´Â ÀÎÀÚ¸¦ ½áÁØ´Ù°í »ý°¢ÇÏ½Ã¸é µÇ°Ú³×¿ä.

 

self¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö Á» ´õ »ìÆìº¸±â À§ÇØ Amazon Ŭ·¡½º¿¡ ¸Þ½îµå¸¦ Ãß°¡ÇØ º¾½Ã´Ù.

 

def exercise(self):           #ÈÆ·ÃÇÏ´Ù

    self.str += 2

    self.dex += 3

    self.vit += 1

 

ÀÌ ¸Þ½îµå´Â ÈÆ·ÃÀ» Çϸé Èû, ±â¼ú, ü·ÂÀÌ ¿Ã¶ó°¡´Â °ÍÀ» Ç¥ÇöÇßÁö¿ä.

¸Þ¸ðÀå¿¡¼­ diablo.py ÆÄÀÏÀÇ Amazon Ŭ·¡½º¿¡ ÀÌ ¸Þ½îµå¸¦ Ãß°¡Çϰí ÀúÀåÇØÁֽñ⠹ٶø´Ï´Ù.

ÀúÀåÇϼÌÀ¸¸é º¯°æµÈ diablo ¸ðµâÀ» ÀçÀûÀç(reload)ÇÏ°í »õ·Î¿î °´Ã¼¸¦ ¸¸µé¾î¼­ ÈÆ·ÃÀ» ½ÃÄѺ¸¼¼¿ä.

 

>>> reload(diablo)

<module 'diablo' from 'c:/python21/exam\diablo.py'>

>>> eve = diablo.Amazon()

>>> eve.exercise()

>>> eve.str

22

 

Èû(str)ÀÌ ¼¼Á³³×¿ä. ÈÆ·ÃÇÑ º¸¶÷ÀÌ ÀÖÁö¿ä?