๐Ÿ’ป์ ํ”„ ํˆฌ ํŒŒ์ด์ฌ 5์žฅ(ํด๋ž˜์Šค)

ํŒ”๋ฆฌ๋™ยท2021๋…„ 3์›” 11์ผ
0
post-thumbnail

ํด๋ž˜์Šค

ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

ํด๋ž˜์Šค๋ฅผ ๊ฐ€์žฅ ์ž˜ ์„ค๋ช…ํ•˜๋Š” ์˜ˆ๋Š” ๋ถ•์–ด๋นต๊ณผ ๋ถ•์–ด๋นตํ‹€์ด๋‹ค. ํด๋ž˜์Šค(Class)๋ž€ ๋˜‘๊ฐ™์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๊ณ„์†ํ•ด์„œ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ถ•์–ด๋นต ํ‹€์ด๊ณ , ๊ฐ์ฒด(Obeject)๋ž€ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ํ”ผ์กฐ๋ฌผ(๋ถ•์–ด๋นตํ‹€์— ์ฐํ˜€๋‚˜์˜จ ๋ถ•์–ด๋นต)์„๋œปํ•œ๋‹ค.

<ํด๋ž˜์Šค ์˜ˆ์‹œ ๊ณ„์‚ฐ๊ธฐ)

class Focal:
    def __init__(selves,first,second):
        selves.first = first
        selves.second = second
# ํด๋ž˜์Šค ์•ˆ์— ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ(method)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 
# ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ด€๋ก€์ ์œผ๋กœ self๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ๊ฑธ ์จ๋„ ๋œ๋‹ค.
    def add(self):
        result = self.first + self.second
        return result 
    
    def mul(self):
        result = self.first * self.second
        return result

    def sub(self):
        result = self.first - self.second
        return result

    def div(self):
        result = self.first / self.second    
        return result

์ƒ์„ฑ์ž(constructor)

์ƒ์„ฑ์ž๋Š”(Constructor)๋ž€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

class Focal:
	def setdata(self,first,second):
    		self.first = first
            	self.second  = second 

class Focal:
    def __init__(selves,first,second):
        selves.first = first
        selves.second = second

์œ„ ์ฝ”๋“œ์—์„œ. ์ฒซ๋ฒˆ์งธ์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•ด๋†“์œผ๋ฉด
ํ•ญ์ƒ setdataํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ first second๊ฐ’์„ ์ €์žฅํ•ด์•ผํ•˜๋Š”๋ฐ
์ƒ์„ฑ์ž(init)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ•ผํ•˜์ง€์•Š์•„๋„ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

์ƒ์†(Inheritance)

์ƒ์†(Inheritance)์ด๋ž€ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ƒ์†์„ ํ•˜๋Š” ์ด์œ : ์ƒ์†์€ ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

class MoreFocal(Focal):   # ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ธ์ž์— ์ƒ์†ํ•  ํด๋ž˜์Šค๋ฅผ ๋„ฃ๋Š”๋‹ค.
    def pow(self):
        result = self.first ** self.second
        return result 
        
a = MoreFocal(4,3) # ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์ธ์ž๋ฅผ ๋˜‘๊ฐ™์ด ๋„ฃ์œผ๋ฉด
print(a.pow())     # ๋˜‘๊ฐ™์ด ์‹คํ–‰์ด ๋œ๋‹ค.
# 64

๋งค์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

class SafeFocal(Focal)
	def div(self):
    	if self.second == 0:  #๋‚˜๋ˆ„๋Š” ๊ฐ’์ด 0์ด๋ฉด 0์„ ์ค€๋‹ค.
        	return 0 
        else:
        	return self.first / self.second
            

SafeFocalํด๋ž˜์Šค๋Š” Focalํด๋ž˜์Šค์— ์žˆ๋Š” div ๋งค์„œ๋“œ๋ฅผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ€๋ชจ ํด๋ž˜์Šค(์ƒ์†ํด๋ž˜์Šค)์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding, ๋ฎ์–ด์“ฐ๊ธฐ)์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋จธ์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜๋ฉด ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

profile
๋ฐฐ์›€์˜ ๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€