Python - ํด๋์ค (Class) 3
์์ฑ์ (Constructor)
์์ฑ์(Constructor)๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์๋ฏธํ๋ค. ๊ฐ์ฒด์ ์ด๊น๊ฐ์ ์ค์ ํด์ผ ํ ํ์๊ฐ ์์ ๋ ์์ฑ์๋ฅผ ๊ตฌํํ๋๊ฒ์ด ์์ ํ ๋ฐฉ๋ฒ์ด๋ค.
calss Calculator:
def __init__(self,first,second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
์ ์ฝ๋๋ ์์ฑ์ __init__์ ํตํด first์ second๋ฅผ ์๋์ผ๋ก ํธ์ถํ๊ฒ ๋์๋ค. ๋ฐ๋ผ์ ์ Calculator๋ฅผ ํธ์ถํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ํ๋ค.
a = Calcualtor(4,2)
#์๋ชป๋ ๋ฐฉ๋ฒ
a = Calculator()
์ ์ฝ๋์ ๊ฐ์ด Calculator๋ฅผ ํธ์ถํ๋ฉด์ ์์ฑ์ __init__์ ๋ค์ด๊ฐ first์ second๋ฅผ ์ ๋ ฅํด์ค์ผ ํ๋ค. ์๋ ์๋ชป๋ ๋ฐฉ๋ฒ์ผ๋ก ํธ์ถํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์๋ ์๋ชป๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋์ค๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์์ฑ์ __init__์ด ์๋ค๋ฉด ๊ฐ๋ฅํ๋ค.
calss Calculator:
def setdata(self,first,second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
์ด์๊ฐ์ด ๋ง์ด๋ค.
ํด๋์ค์ ์์
์ด๋ค ํด๋์ค๋ฅผ ๋ง๋ค ๋ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ์ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ด ์์์ด๋ค. ๋ณดํต ์์์ ๊ธฐ์กด ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ์ฌ์ฉํ๋ค. '๊ธฐ์กด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๋ฉด ๊ธฐ์กด ํด๋์ค๋ฅผ ์์ ํ๋ฉด ๋์ง!'๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์์ง๋ง, ๊ธฐ์กด ํด๋์ค๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณต๋๊ฑฐ๋ ์์ ์ด ํ์ฉ๋์ง ์๋ ์ํฉ์ด๋ผ๋ฉด ์์์ ๋ฐ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์๊น Calculatorํด๋์ค๋ฅผ ์์๋ฐ์ a์ b์ ๊ณฑ์ ๊ณ์ฐํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์.
class powercalculator(Calculator):
def pow(self):
result = self.first**self.second
return result
ํด๋์ค powercalculator๋ ๊ธฐ์กด ํด๋์ค Calculator์ ๋ชจ๋ ๊ธฐ๋ฅ(add์ ๊ฐ์)์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด๋ณ์๊น์ง ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding, ๋ฎ์ด์ฐ๊ธฐ)๋ ๋ถ๋ชจ ํด๋์ค(์์ํ ํด๋์ค)์ ์๋ ๋ฉ์๋๋ฅผ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ค์ ๋ง๋๋ ๊ฒ์ ๋งํ๋ค. ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ํ ์์ธํ ์์ ๋ ์๋ ์ ํ ํฌ ํ์ด์ฌ์ ์ฐธ๊ณ ํ์!
ํด๋์ค ๋ณ์
ํด๋์ค ๋ณ์๋ ๊ฐ์ฒด ๋ณ์์ ๋ค๋ฅด๊ฒ ํด๋์ค๋ก ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด์ ๊ณต์ ๋๋ค.
class Family():
lastname = "๊น"
a = Family()
b = Family()
print(a.lastname)
print(b.lastname)
์์๊ฐ์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋๊ฐ์ ์ถ๋ ฅ ๋ชจ๋ ๊น์ ์ถ๋ ฅํ๋ค.
Family.lastname = "๋ฐ"
print(a.lastname)
print(b.lastname)
์ดํ ์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ ๊ฐ์ ์ถ๋ ฅ ๋ชจ๋ "๋ฐ"์ ์ถ๋ ฅํ๊ฒ ๋๋ค.
์ด ๊ธ์ "์ ํ ํฌ ํ์ด์ฌ"์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฐธ๊ณ ํ๊ณ ์ถ๋ค๋ฉด
https://wikidocs.net/28
05-1 ํด๋์ค
์ด๋ณด ๊ฐ๋ฐ์๋ค์๊ฒ ํด๋์ค(class)๋ ๋๊ธฐ ํ๋ ์ฅ๋ฒฝ๊ณผ๋ ๊ฐ์ ์กด์ฌ์ด๋ค. ๋ ์๋ค ์ค์๋ ํด๋์ค๋ผ๋ ๋จ์ด๋ฅผ ์ฒ์ ์ ํ๋ ์ด๋ค๋ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋๋์ฒด ํด๋์ค๊ฐ ๋ฌด์์ธ์ง ...
wikidocs.net