์ƒˆ์†Œ์‹

๐Ÿ ํŒŒ์ด์ฌ (Python)/-- ๋ฌธ๋ฒ•

ํŒŒ์ด์ฌ(Python) ๊ธฐ์ดˆ (13) ํด๋ž˜์Šค์˜ ์ƒ์†, ๋‹ค์ค‘์ƒ์†

  • -

์ƒ์œ„ ํด๋ž˜์Šค๋Š” ์Šˆํผํด๋ž˜์Šค(๋ถ€๋ชจ)๋ผ๊ณ  ํ•˜๋ฉฐ, ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์„œ๋ธŒํด๋ž˜์Šค(์ž์‹)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ธŒํด๋ž˜์Šค๋Š” ์Šˆํผํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ค‘๋ณต์ž‘์„ฑ์„ ํ”ผํ•˜๋ฉฐ, ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

*์ƒ์œ„ ํด๋ž˜์Šค ์„ ์–ธ


PC๋ผ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ‘์— LG์™€ Samsung , ๋‘๊ฐ€์ง€์˜ ์ž์‹ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

       *๋ถ€๋ชจํด๋ž˜์Šค ์„ ์–ธ(PC)

class PC:
    '''์Šˆํผ ํด๋ž˜์Šค'''
    def __init__ (self, price, color) :
        self.price = price
        self.color = color
    def Info(self) :
        return "๊ฐ€๊ฒฉ์€ : %s , ์ƒ‰๊น”์€ : %s" %(self.price, self.color)

      *์ž์‹ํด๋ž˜์Šค ์„ ์–ธ(LG, ์‚ผ์„ฑ)

class Lg(PC) :      #ํด๋ž˜์Šค ์„ ์–ธ๋’ค ๊ด„ํ˜ธ์— ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ƒ์†
    def __init__(self, name, price, color) :
        super().__init__(price,color)  #price, color๋ฅผ ์Šˆํผํด๋ž˜์Šค๋กœ ๋„˜๊ธฐ๋ ค๋ฉด initํ•„์š”
        self.name = name
    def model(self) :
        return "Your PC's Name : %s" %(self.name)

class Samsung(PC) :
    def __init__(self, name, price, color) :
        super().__init__(price,color)  #price, color๋ฅผ ์Šˆํผํด๋ž˜์Šค๋กœ ๋„˜๊ธฐ๋ ค๋ฉด initํ•„์š”
        self.name = name
    def model(self) :
        return "Your PC's Name : %s" %(self.name)

 

์ž์‹์€ ๋ถ€๋ชจ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€๋ชจํด๋ž˜์Šค์˜ Info๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉด,

model1 = Lg("gram", "170๋งŒ์›", "ํฐ์ƒ‰")
print(model1.Info())

์ถœ๋ ฅ๊ฐ’->>>>>>>>>
๊ฐ€๊ฒฉ์€ : 170๋งŒ์› , ์ƒ‰๊น”์€ : ํฐ์ƒ‰

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

 

*๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(method overriding)

๋งŒ์•ฝ ๋ฐฉ๊ธˆ ์‚ฌ์šฉํ•œ ๋ถ€๋ชจํด๋ž˜์Šค์˜ Info()๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹๋„ ๊ฐ–๊ณ ์žˆ๋‹ค๋ฉด, ์ž์‹์˜ Info()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ž์‹ํด๋ž˜์Šค์ธ LG์—๋„ Info()๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, Info๋ฅผ ํ˜ธ์ถœํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

class PC:
    '''์Šˆํผ ํด๋ž˜์Šค'''
    def __init__ (self, price, color) :
        self.price = price
        self.color = color
    def Info(self) :     #๋ถ€๋ชจ ํด๋ž˜์Šค์˜ Info
        return "๊ฐ€๊ฒฉ์€ : %s , ์ƒ‰๊น”์€ : %s" %(self.price, self.color)


class Lg(PC) :
    def __init__(self, name, price, color) :
        super().__init__(price,color)  #price, color๋ฅผ ์Šˆํผํด๋ž˜์Šค๋กœ ๋„˜๊ธฐ๋ ค๋ฉด initํ•„์š”
        self.name = name
    def model(self) :
        return "Your PC's Name : %s" %(self.name)
    def Info(self):
    	return "์ด๊ฑด ์ž์‹ํด๋ž˜์Šค์˜ Info"

class Samsung(PC) :
    def __init__(self, name, price, color) :
        super().__init__(price,color)  #price, color๋ฅผ ์Šˆํผํด๋ž˜์Šค๋กœ ๋„˜๊ธฐ๋ ค๋ฉด initํ•„์š”
        self.name = name
    def model(self) :
        return "Your PC's Name : %s" %(self.name)


model1 = Lg("gram", "170๋งŒ์›", "ํฐ์ƒ‰")
print(model1.Info())


์ถœ๋ ฅ๊ฐ’------------------->>>>>
์ด๊ฑด ์ž์‹ํด๋ž˜์Šค์˜ Info

 

 

*๋‹ค์ค‘์ƒ์†, Inheritance Info ,  class.mro()

์œ„์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ํ•œ๋‘๊ฐœ์˜ ์ƒ์†๊ด€๊ณ„๋Š” ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘์ฒฉ๋˜๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ถ€๋ชจ, ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด

ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ ํด๋ž˜์Šค๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ™•์ธ ํ•ด ๋ณผ์ˆ˜์žˆ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

mro๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

class X() :
    pass

class Y() :
    pass

class Z() :
    pass

class A(X,Y) :  #X,Y๋ฅผ ์ƒ์†๋ฐ›์Œ
    pass

class B(Y,Z) :  #Y,Z๋ฅผ ์ƒ์†๋ฐ›์Œ
    pass

class M(B,A,Z) : #B,A,Z๋ฅผ ์ƒ์†๋ฐ›์Œ
    pass

print("X๋Š”", X.mro())

print("A๋Š”", A.mro())

print("M์€", M.mro())


์ถœ๋ ฅ๊ฐ’------->>>>>>>
X๋Š” [<class '__main__.X'>, <class 'object'>]
A๋Š” [<class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class 'object'>]
M์€ [<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]

(ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ pass๋Š”, ๋‚ด์šฉ์ด ๊ณต๋ฐฑ์ด์–ด๋„ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.) ๋‚˜์ค‘์— ์ž…๋ ฅํ• ๊ฒŒ~ ์ผ๋‹จ ์„ ์–ธํ•˜๊ณ  ์ด๋Ÿฐ ๋œป์œผ๋กœ ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.