ํด๋์ค๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช ํ๋ ์๋ ๋ถ์ด๋นต๊ณผ ๋ถ์ด๋นตํ์ด๋ค. ํด๋์ค(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)๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์๋ฏธํ๋ค.
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)์ด๋ ์ด๋ค ํด๋์ค๋ฅผ ๋ง๋ค๋ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ์ ์ ์๊ฒ ๋ง๋ค๋ ๊ฒ์ด๋ค.
์์์ ํ๋ ์ด์ : ์์์ ๊ธฐ์กด ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ์ฌ์ฉ๋๋ค.
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, ๋ฎ์ด์ฐ๊ธฐ)์ด๋ผ๊ณ ํ๋ค. ์ด๋ ๊ฒ ๋จธ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ๋ฉด ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋ ๋์ ์ค๋ฒ๋ผ์ด๋ฉํ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.