(°íÄ£ ³¯ : 2001-08-30)
ÀÌÁ¦ ¸Þ½îµå¿¡ ´ëÇØ¼´Â ´Ùµé ¾Ë°í °è½Ã°ÚÁÒ?
¸Þ½îµå¶ó´Â °ÍÀº ¿ì¸®°¡ Ŭ·¡½º¸¦ ¸¸µé¸é¼
±× ¾È¿¡ ¸¸µé¾î ³ÖÀº ÇÔ¼ö¸¦ ¸»ÇÏÁö¿ä?
¸¸µé¾îÁø ¸Þ½îµå¸¦ »ç¿ëÇÏ·Á¸é °´Ã¼.¸Þ½îµå()¿Í °°Àº Çü½ÄÀ¸·Î
È£ÃâÀ» ÇØÁÖ¾ú±¸¿ä.
¿À´ÃÀº ±×·± ÀϹÝÀûÀÎ ¸Þ½îµåµé°ú´Â Á¶±Ý
´Ù¸¥ Ưº°ÇÑ ¸Þ½îµåµé¿¡ ´ëÇØ ÇÔ²² ¾Ë¾Æº¸·Á°í ÇÕ´Ï´Ù.
|
# bookstore.py class Book: def setData(self, title,
price, author):
self.title = title
self.price = price
self.author = author def printData(self):
print 'Á¦¸ñ : ', self.title
print '°¡°Ý : ', self.price
print 'ÀúÀÚ : ', self.author def __init__(self): print
'Ã¥
°´Ã¼¸¦
»õ·Î
¸¸µé¾ú¾î¿ä~' |
¿¹Á¦·Î
Book(Ã¥) Ŭ·¡½º¸¦ °®´Â bookstore(Ã¥¹æ) ¸ðµâÀ» ¸¸µé¾î º¸¾Ò½À´Ï´Ù.
Ã¥ Ŭ·¡½ºÀÇ ¸Þ½îµå·Î´Â Ã¥ Á¦¸ñ, °¡°Ý, ÀúÀÚ¿Í °°Àº ÀÚ·áµéÀ» ÀÔ·ÂÇÒ ¶§ »ç¿ëÇÒ setData()¿Í ÀÌ·± ÀÚ·áµéÀ» Ãâ·ÂÇØÁÖ´Â printData()¸¦ ¸¸µé¾î
ÁÖ¾úÁö¿ä.
±×¸®°í __init__À̶ó´Â ¸Þ½îµåµµ ÀÖÁö¿ä?
À̰ÍÀÌ ¹Ù·Î ÆÄÀ̽㿡¼ Ưº°ÇÏ°Ô ¾à¼ÓµÈ
¸Þ½îµå °¡¿îµ¥ Çϳª·Î ÃʱâÈ(initialize) ¸Þ½îµå¶ó°íµµ ÇÕ´Ï´Ù.
¾î¶² Ŭ·¡½ºÀÇ °´Ã¼°¡ ¸¸µé¾îÁú ¶§ ÀÚµ¿À¸·Î È£ÃâµÇ¾î¼
±× °´Ã¼°¡ °®°Ô µÉ ¿©·¯ °¡Áö ¼ºÁúÀ» Á¤ÇØÁÖ´Â ÀÏÀ» ÇÏÁö¿ä.
±×·³ Ã¥ Ŭ·¡½ºÀÇ °´Ã¼¸¦ Çϳª ¸¸µé¾îº¼±î¿ä?
|
>>> import
bookstore >>> b =
bookstore.Book() å
°´Ã¼¸¦
»õ·Î
¸¸µé¾ú¾î¿ä~ |
Book()ÇØ¼
Book °´Ã¼¸¦ ¸¸µéÀÚ¸¶ÀÚ ÃʱâÈ ¸Þ½îµå°¡ ½ÇÇàµÇ¾ú±º¿ä.
³ª¸ÓÁö
setData¿Í printData ¸Þ½îµåµéÀº ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù.
|
>>>
b.setData('´©°¡
³»
Ä¡Á
¸Ô¾úÀ»±î', '300¿ø', '¹ÌŰ') >>>
b.printData() Á¦¸ñ : ´©°¡ ³» Ä¡Á ¸Ô¾úÀ»±î °¡°Ý : 300¿ø ÀúÀÚ : ¹ÌŰ |
ÀÌÁ¦ ÃʱâÈ ¸Þ½îµå°¡ ¹ºÁö ´ëÃæ °¨À» ÀâÀ¸¼ÌÀ¸¸é __init__ ¸Þ½îµå¸¦ »ç¿ëÇØ¼ ½ÇÁ¦·Î °´Ã¼¸¦ ÃʱâÈ ½ÃÄѺ¸µµ·Ï ÇϰڽÀ´Ï´Ù.
__init__ ¸Þ½îµå¸¦
¾Æ·¡¿Í °°ÀÌ ¼öÁ¤Çغ¸¼¼¿ä.
|
def __init__(self, title,
price, author):
self.setData(title, price, author) print
'Ã¥
°´Ã¼¸¦
»õ·Î
¸¸µé¾ú¾î¿ä~' |
°´Ã¼¸¦ »ý¼º½Ãų ¶§ Á¦¸ñ, °¡°Ý, ÀúÀÚ¸¦ ÀÎÀÚ·Î ¹Þ¾Æ¼, setData ¸Þ½îµå¿¡°Ô ³Ñ°ÜÁÖµµ·Ï ÇßÁÒ?
¹°·Ð ÃʱâÈ ¸Þ½îµå¿¡¼ Á÷Á¢ º¯¼ö¸¦ ´Ù·ïµµ
»ó°ü¾øÁö¸¸ setData ¸Þ½îµå¸¦ ¹Ì¸® ¸¸µé¾îµ×À¸´Ï±î ÀÌ¿ëÀ» ÇÑ °ÍÀÔ´Ï´Ù.
ÀÌÁ¦ºÎÅÍ Ã¥ °´Ã¼¸¦ ¸¸µé ¶§´Â ´ÙÀ½°ú °°ÀÌ
¼¼ °³ÀÇ ÀÎÀÚ¸¦ ³Ñ°ÜÁà¾ßÇÕ´Ï´Ù.
|
>>>
reload(bookstore) >>> b2 =
bookstore.Book('³»°¡
¸Ô¾úÁö·Õ', '200¿ø', '¹Ì´Ï') Ã¥
°´Ã¼¸¦
»õ·Î
¸¸µé¾ú¾î¿ä~ |
±×·±´ë·Î ¾µ ¸¸ ÇÏÁÒ? °ªÀÌ Àß µé¾î°¬´ÂÁöµµ È®ÀÎÇØº¸¼¼¿ä.
Âü°í·Î ¸»¾¸µå¸®¸é, ÃʱâÈ ¸Þ½îµå¿Í °°Àº °ÍÀ» ´Ù¸¥ °´Ã¼ÁöÇâ ¾ð¾î¿¡¼´Â »ý¼ºÀÚ(constructor)¶ó°í ºÎ¸¥´ä´Ï´Ù.
__init__ ¸Þ½îµå¿Í
¹Ý´ë·Î °´Ã¼°¡ ¾ø¾îÁú ¶§ È£ÃâµÇ´Â ¸Þ½îµåµµ ÀÖ½À´Ï´Ù.
ÀÌ·± °ÍÀ» ¼Ò¸êÀÚ(destructor)¶ó°í Çϴµ¥, ÆÄÀ̽㿡¼´Â __del__ ¸Þ½îµå°¡
¼Ò¸êÀÚÀÇ ¿ªÇÒÀ» ¸Ã°í ÀÖÁÒ.
°´Ã¼°¡ ¾ø¾îÁö´Â ¼öµµ Àֳı¸¿ä? ¹¹ÇÏ·Á°í ¾ø¾Ö³Ä±¸¿ä?
del ¹®À» »ç¿ëÇØº¸¼¼¿ä.
´çÀå ¾ø¾îÁý´Ï´Ù.
¶Ç, ¸¸µé¾î
µÐ °´Ã¼°¡ ´õ ÀÌ»ó ÇÊ¿ä ¾ø¾îÁö¸é ÆÄÀ̽ãÀÌ ¾Ë¾Æ¼ ó¸®ÇØÁֱ⵵ Çϱ¸¿ä.
±×°Ç Á÷Á¢ __del__ ¸Þ½îµå¸¦ ¸¸µé¾î¼ Å×½ºÆ®Çغ¸½Ã¸é Àß ¾Æ½Ç ¼ö ÀÖ°ÚÁÒ?
±×³É ´Ù¸¥ ¸Þ½îµå¿Í ¶È°°ÀÌ ÀÛ¼ºÇÏ½Ã¸é µË´Ï´Ù.
¾î¶² °´Ã¼°¡ ¾ø¾îÁö±â Àü¿¡ ¹º°¡ 󸮸¦
ÇÊ¿ä·Î ÇÑ´Ù¸é ¼Ò¸êÀÚ°¡ À¯¿ëÇÏ°Ô ¾²À̰ÚÁö¿ä?
À̹ø¿£
printData¿Í °°Àº ¸Þ½îµå¸¦ È£ÃâÇÏ´Â ´ë½Å, ÆÄÀ̽ãÀÇ ±âº»¹®ÀÎ print ¹®À» »ç¿ëÇØ¼ Ã¥ Á¦¸ñÀ» Âï¾îº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
ÀÌ·± ÀÏÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â °ÍÀº ¹Ù·Î __repr__ ¸Þ½îµåÀÌÁö¿ä.
Ã¥ Ŭ·¡½º¿¡ ¾Æ·¡¿Í °°ÀÌ __repr__ ¸Þ½îµå¸¦ Ãß°¡ÇØÁÖ¼¼¿ä.
|
def __repr__(self):
return self.title |
º° ´Ù¸¥ °ÍÀº ¾ø±¸¿ä, return ¹®À» »ç¿ëÇß´Ù´Â °Í¸¸ ´«¿©°Üº¸½Ã¸é µË´Ï´Ù.
__repr__
¸Þ½îµå´Â ¡®¹®ÀÚ¿¡¯À» ¡®return¡¯ ÇÑ´Ù°í »ý°¢ÇϽøé
µÇ°ÚÁÒ?
±×·³ Ã¥¹æ ¸ðµâÀ» ÀçÀûÀçÇÏ°í »õ Ã¥À» ¸¸µé¾î¼
Å×½ºÆ®Çغ¸¼¼¿ä.
|
>>> b3 =
bookstore.Book('³ªµÎ
Á»
Áà', '100¿ø', 'Á㺷è') Ã¥
°´Ã¼¸¦
»õ·Î
¸¸µé¾ú¾î¿ä~ >>> print b3 ³ªµÎ
Á»
Áà |
ÀÌÁ¦ Ã¥¹æÀº ¹®À» ´Ý°í ¼¼¸ð, ³×¸ð, µ¿±×¶ó¹Ì °°Àº µµÇüÀ» ¸¸µé¾îº¼±î¿ä?
|
# shape.py class Shape: area = 0 def __add__(self, other): return self.area + other.area |
Çб³¿¡¼ µµÇü¿¡ ´ëÇØ ¹è¿ï ¶§´Â ´Ã ³ÐÀÌ¿¡ ´ëÇØ »ý°¢À» ÇÏÁö¿ä?
¿©±â¼´Â µÎ µµÇüÀÇ ³ÐÀ̸¦ ´õÇÏ´Â __add__ ¸Þ½îµå¸¦ ¸¸µé¾îº¸¾Ò½À´Ï´Ù.
µÎ °³ÀÇ °´Ã¼ self¿Í other¸¦ ÀÎÀÚ·Î ¹Þ¾Æ¼ ±× µÑÀÇ ³ÐÀ̸¦ ´õÇÑ °ªÀ» µ¹·ÁÁÖ´Â ÀÏÀ» Çϵµ·Ï ÇßÁö¿ä.
|
>>> a =
shape.Shape() >>> a.area =
20 >>> b =
shape.Shape() >>> b.area =
10 >>> a + b 30 |
µµÇü a¿Í b¸¦ µ¡¼À ¿¬»êÀÚ(+)·Î ´õÇß´õ´Ï µÎ µµÇüÀÇ ³ÐÀ̰¡ ´õÇØÁ³ÁÒ?
¸¶Ä¡ º¸ÅëÀÇ µÎ ¼ýÀÚ¸¦ ´õÇÏ´Â °Íó·³ °£´ÜÇÏ°Ô ¸»ÀÔ´Ï´Ù.
ÀÌ¿Í °°ÀÌ Æ¯º°ÇÑ ¸Þ½îµå¸¦ »ç¿ëÇØ¼ ¿¬»êÀÚ°¡ ÇÏ´Â ÀÏÀ» Á¤ÀÇÇÏ´Â °ÍÀ» ¿¬»êÀÚ Áߺ¹(overload)À̶ó°í ºÎ¸¥´ä´Ï´Ù.
¿¬»êÀÚ Áߺ¹À» ÀÌ¿ëÇÏ¸é »ç¿ëÀÚ°¡ Á÷Á¢ ¸¸µç Ŭ·¡½ºÀÇ °´Ã¼¿¡ ´ëÇØ¼µµ ¿¬»êÀÚ¸¦ ¾µ ¼ö ÀÖ°Ô µÇÁö¿ä. ¸¶Ä¡ ÆÄÀ̽ã ÀÚü¿¡¼ Á¦°øÇÏ´Â ÀÚ·áÇüó·³ ¸»ÀÔ´Ï´Ù.
¾ÆÁ÷µµ »çÅÂÀÇ ½É°¢¼ºÀ» ÀÌÇØ ¸øÇÏ°í ¡°a + b°¡ ¹¹ ¾î·±æ·¡? ¿ø·¡ ±×³É ´õÇÏ¸é µÇ´Â °ÅÀݾÆ~¡±¶ó°í ÇϽô ºÐµé! --#
Shape Ŭ·¡½º¿¡ __add__ ¸Þ½îµå¸¦ ³ÖÁö ¸»°í °´Ã¼ µÎ °³¸¦ ¸¸µç ´ÙÀ½¿¡ ´õÇØº¸¼¼¿ä.
Áö³ª°¡´ø ¹ìÀÌ ¿ô½À´Ï´ç¡¦--;
±×¸®°í ¹ú¼ ´«Ä¡Ã¤½Å ºÐµµ ÀÖ°ÚÁö¸¸, µ¡¼À ¿¬»êÀÚ ´ë½Å __add__ ¸Þ½îµå¸¦ Á÷Á¢ È£ÃâÇØµµ ±× °á°ú´Â ¶È°°´ä´Ï´Ù.
|
>>>
a.__add__(b) 30 |
±×·³ µµÇü °´Ã¼ °£¿¡ »¬¼Àµµ ÇÒ ¼ö ÀÖµµ·Ï __sub__ ¸Þ½îµåµµ ¸¸µé¾îº¸¼¼¿ä~.
ÀÌÁ¦ ¿¬»êÀÚ Áߺ¹¿¡ ´ëÇØ¼ ¾î´À Á¤µµ °¨ÀÌ ÀâÈ÷½ÃÁÒ?
ÆÄÀ̽㿡¼ Á¦°øÇÏ´Â ¿¬»êÀÚ Áߺ¹ ¸Þ½îµå´Â À̿ܿ¡µµ ¸¹ÀÌ Àֱ⠶§¹®¿¡ ¸ðµÎ »ìÆìº¸±â´Â Èûµé°Ú³×¿ä.
¸¶Áö¸·À¸·Î µÎ °³ÀÇ °´Ã¼¸¦ ºñ±³ÇÏ´Â ºñ±³ ¿¬»êÀÚ(<, >, ==)¸¦ ¾µ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¸Þ½îµå¸¦ »ìÆìº¸¸é¼ Á¤¸®¸¦ Çϵµ·Ï ÇϰڽÀ´Ï´Ù.
Shape Ŭ·¡½º¿¡ ¾Æ·¡¿Í °°ÀÌ __cmp__ ¸Þ½îµå¸¦ Ãß°¡ÇØÁÖ¼¼¿ä.
|
def __cmp__(self, other):
if self.area < other.area :
return -1
elif self.area == other.area :
return 0
else : return 1 |
µÎ °´Ã¼ self¿Í other¸¦ ºñ±³Çؼ self°¡ Å©¸é 1À», other°¡ Å©¸é –1À» µ¹·ÁÁÖ°í, µÎ ¼ö°¡ °°À» ¶© 0À» µ¹·ÁÁÖµµ·Ï Çß½À´Ï´Ù.
ÀÌÁ¦ µÎ ¼ýÀÚ¸¦ ºñ±³ÇϵíÀÌ µÎ °´Ã¼¸¦ ±×³É ºñ±³ÇÏ¸é µÇ°ÚÁÒ?
shape ¸ðµâÀ» ÀçÀûÀçÇÏ°í »õ·Î¿î °´Ã¼µéÀ» ¸¸µé¾î¼ °¢°¢ area °ªÀ» Á¤ÇØÁØ ´ÙÀ½, µÎ °´Ã¼¸¦ ºñ±³Çغ¸¼¼¿ä.
|
>>> if c >
d: print 'c°¡
´õ
³Ð¾î¿ä~' ... c°¡ ´õ ³Ð¾î¿ä~ |
ºñ±³°¡ Àß µÇ³ª¿ä?
¿À´Ã °Á´ Á» ±æ¾îÁ³±º¿ä.
¾Æ±îµµ ¸»¾¸µå·ÈÁö¸¸ ¿¬»êÀÚ Áߺ¹ ¸Þ½îµå´Â ¿À´Ã º¸¿©µå¸° °Í ¸»°íµµ ¸¹ÀÌ ÀÖÀ¸´Ï ´Ù¸¥ ÀÚ·áµµ ã¾Æº¸½Ã±â ¹Ù¶ø´Ï´Ù.
±×·³¡¦
I¡¯ll be back¡¦ ^^