๐ฅ ํด๋์ค์ ๊ฐ์ฒด
- ํด๋์ค(Class) : ๊ฐ์ฒด(object)๋ฅผ ๋ง๋ค์ด ๋ด๋ ํ, ๋ณ์์ ๋ฉ์๋(๊ฐ์ฒด ๋ด์ ์ ์๋ ํจ์)๋ฅผ ์ ์ํ๋ ํ
- ๊ฐ์ฒด(Object) : ํ์ ์ํด ์์ฑ๋ ๊ฒ. ํด๋์ค์ instance๋ผ ๋ถ๋ฅธ๋ค.
- 1๊ฐ์ ํด๋์ค๋ ๋ฌด์ํ ๋ง์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
class Calculator:
pass
cal1 = Calculator()
cal2 = Calculator()
print(type(cal1)) # <class '__main__.Calculator'>
print(cal1 == cal2) # False
๊ฐ์ฒด์ ์ธ์คํด์ค์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
Calculator()์ ๊ฒฐ๊ด๊ฐ์ ๋๋ ค๋ฐ์ cal1๊ณผ cal2๋ ๊ฐ์ฒด์ด๋ค.
๊ทธ๋ฆฌ๊ณ cal1๊ณผ cal2 ๊ฐ์ฒด๋ Calculator์ ์ธ์คํด์ค์ด๋ค.
์ธ์คํด์ค๋ผ๋ ๋ง์ ํน์ ๊ฐ์ฒด๊ฐ ์ด๋ค ํด๋์ค์ ๊ฐ์ฒด์ธ์ง ๊ด๊ณ ์์ฃผ๋ก ์ค๋ช ํ ๋ ์ฌ์ฉํ๋ค.
'cal1์ ๊ฐ์ฒด'
'cal1๋ Calculator์ ์ธ์คํด์ค'
๐ฅ ํด๋์ค ๊ธฐ๋ณธ ๊ตฌ์ฑ์์
class Calculator:
def setdata(self, first, second):
self.first = first
self.second = second
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
ํด๋์ค ๋ด ํจ์ setdata๋ก ๊ฐ์ฒด์์ ๊ณ์ฐ์ ์ฐ์ด๋ ๋ ์ซ์๋ฅผ ์ง์ ํ ์ ์๋ค.
add, mul, sub, div ํจ์๋ฅผ ํตํด ๊ฐ๊ฐ ๋ํ๊ธฐ, ๊ณฑํ๊ธฐ, ๋นผ๊ธฐ, ๋๋๊ธฐ๋ฅผ ์ํํ๋ค.
๐ ๋ฉ์๋ (method)
- ํด๋์ค ๋ด์ ์ ์๋ ํจ์(setdata, add, mul, sub, div)๋ฅผ ๋ฉ์๋(method)๋ผ ํ๋ค.
๐ Self
- ์ ํด๋์ค์์ ๋ฉ์๋๋ ๋ชจ๋ ' self '๋ฅผ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๊ฐ์ ๋ฐ๋๋ค.
- ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ฒด๊ฐ ์๋์ผ๋ก ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ๋ฌ๋๋ค.
- ํธ์ถํ ๊ฐ์ฒด ์์ ์ด ๋ฉ์๋์ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋ฉ์๋์ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ๊ด๋ก์ ์ผ๋ก ' self '๋ฅผ ์ฌ์ฉํ๋ค.
a = Calculator()
a.setdata(4,2)
๊ฐ์ฒด a ๋ setdata์ self ๋งค๊ฐ๋ณ์์, ์ ๋ ฅ๊ฐ 4๋ first ๋งค๊ฐ๋ณ์์, ์ ๋ ฅ๊ฐ 2๋ second ๋งค๊ฐ๋ณ์์ ์ ๋ฌ๋๋ค.
๐ ์ธ์คํด์ค ๋ณ์
- ์ธ์คํด์ค์ ๊ฐ์ฒด๋ ๋์ผํ๋ค. ์๋์ ์ค๋ช ์์ ํผ์ฉํด์ ์ฌ์ฉํ๊ฒ ๋ค.
- ํด๋์ค ๋ด์ ๋ฉ์๋ ์์์ ' self.์ธ์คํด์ค๋ณ์ = ๊ฐ ' ์ผ๋ก ์์ฑ๋ ๋ณ์๋ ์ธ์คํด์ค(๊ฐ์ฒด)์ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋๋ค. ์์ฑ๋ ๋ณ์๋ฅผ ์ธ์คํด์ค ๋ณ์๋ผ ๋ถ๋ฅธ๋ค.
- ํด๋์ค ๋ด์ ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ (๊ฐ์ฒด๊ฐ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๊ฐ์ฒด๊ฐ ๋ฉ์๋์ ์ ๋ฌ๋๋ฏ๋ก) self.์ธ์คํด์ค๋ณ์๋ก ์ ๊ทผํ๋ค.
a = Calculator()
a.setdata(4,2)
print(a.first) # 4
print(a.second) # 2
print(type(a.first)) # <class 'int'>
๊ฐ์ฒด a๊ฐ setdata๋ฅผ ํธ์ถํด a์ ์ธ์คํด์ค ๋ณ์ first, second๊ฐ ์์ฑ๋์๋ค.
- ๊ฐ๊ฐ์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ง๋ค ๋ ๋ฆฝ์ ์ด๋ค. (์๋ก ๋ค๋ฅธ ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฐ์ฒด์ ์ธ์คํด์ค ๋ณ์๋ ์๋ก ๋ค๋ฅธ ๋ณ์์ด๋ค.)
b = Calculator()
b.setdata(3,6)
a.first = 7
print(a.first) # 7
print(b.first) # 3
๊ฐ์ฒด a์ first ์ธ์คํด์ค ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ๊ฐ์ฒด b์ first ์ธ์คํด์ค ๋ณ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค.
a์ first์ b์ first๋ ์๋ก ๋ค๋ฅธ ์ธ์คํด์ค ๋ณ์์ด๋ค.
- ๊ฐ์ฒด์ด๋ฆ.๋ณ์์ด๋ฆ = ๊ฐ ํํ๋ก ์ธ์คํด์ค ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
a.calculator_name = 'cal1'
๐ ํด๋์ค ๋ณ์
- ๊ฐ์ ํด๋์ค๋ก ์์ฑ๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๊ณต์ ๋ ๊ฐ์ ๊ฐ๋ ๋ณ์์ด๋ค.
class Team_member:
team_name = 'MMM'
def member_name(self, first, second):
self.first = first
self.second = second
amy = Team_member()
amy.member_name('Amy', 'Kim')
tom = Team_member()
tom.member_name('Tom','Kang')
print(Team_member.team_name) # MMM
print(amy.team_name) # MMM
print(tom.team_name) # MMM
Team_member.team_name = 'WWW'
print(Team_member.team_name) # WWW
print(amy.team_name) # WWW
print(tom.team_name) # WWW
- ํด๋์ค ๋ณ์์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์์ฑํด๋ ํด๋์ค ๋ณ์์๋ ์๋ฌด ์๊ด์๋ค.
amy.team_name = 'YB'
print(Team_member.team_name) # WWW
print(tom.team_name) # WWW
print(amy.team_name) # YB
ํด๋์ค Team_member์ team_name ํด๋์ค ๋ณ์๊ฐ ๋ฐ๋๋ ๊ฒ์ด ์๋๋ผ amy ๊ฐ์ฒด์ team_name ์ด๋ผ๋ ์ธ์คํด์ค ๋ณ์๊ฐ ์๋กญ๊ฒ ์์ฑ๋๋ค.
์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์๋ ๋์ผํ ์ด๋ฆ์ผ๋ก ์์ฑํ ์ ์๋ค.
ํด๋์ค ๋ณ์๋ฅผ ์ ๊ทผํ ๋ ' ๊ฐ์ฒด์ด๋ฆ.ํด๋์ค๋ณ์ ' ๋ก ์ ๊ทผํ๋ฉด, ์์ ๊ฐ์ ๊ฒฝ์ฐ์์ ํด๋์ค ๋ณ์๊ฐ ์ํ๋๋ค.
๋ฐ๋ผ์ ํด๋์ค ๋ณ์๋ ' ํด๋์ค์ด๋ฆ.ํด๋์ค๋ณ์ ' ๋ก ์ ๊ทผํ์.
๐ ์์ฑ์ (Constructor)
- ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋
- ๋ฉ์๋ ์ด๋ฆ์ผ๋ก __init__ ๋ฅผ ์ฌ์ฉํ๋ค.
- ์ธ์คํด์ค ๋ณ์๋ ์ฃผ๋ก __init__ ์์ ์ ์๋๊ณ , ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
class Calculator:
def __init__(self, first, second):
self.first = first
self.second = second
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
a = Calculator(4,2)
print(a.first) # 4
print(a.second) # 2
print(a.add()) # 6
๐ฅ ์์
๐ ์์ ๊ตฌ์กฐ
- ํด๋์ค์์ ์์์ด๋ ์ด๋ค ํด๋์ค๋ฅผ ๋ง๋ค ๋ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค.
- class ํด๋์ค์ด๋ฆ(์์ํ ํด๋์ค ์ด๋ฆ)
class MoreCal(Calculator):
pass
c = MoreCal(5,2)
print(c.add()) # 7
print(c.sub()) # 3
print(c.mul()) # 10
print(c.div()) # 2.5
MoreCal ํด๋์ค๋ Calculator ํด๋์ค์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
Calculator๊ฐ ๋ถ๋ชจ ํด๋์ค, MoreCal์ด ์์ ํด๋์ค์ด๋ค.
[ ์์์ ์ฌ์ฉํ๋ ์ด์ ]
๊ธฐ์กด ํด๋์ค๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณต๋๊ฑฐ๋ ์์ ์ด ํ์ฉ๋์ง ์๋ ์ํฉ์ด๋ผ๋ฉด ํด๋์ค ์์ ๊ณผ ๋ฉ์๋ ์ถ๊ฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์์์ ์ด์ฉํด ๊ธฐ์กด ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋ฉด์, ๋ฉ์๋ ์ถ๊ฐ ๋๋ ์์ ์ ํ ์ ์๋๋ก ํ๋ค.
๐ ๋ฉ์๋ ์ถ๊ฐ
- ๊ธฐ์กด class์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ธฐ์ํด ์ฌ์ฉ๋ ์ ์๋ค.
class MoreCal(Calculator):
def pow(self):
result = self.first ** self.second
return result
c = MoreCal(5,2)
print(c.pow()) # 25
๐ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ (๋ฉ์๋ ์์ )
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ: ๋ถ๋ชจ ํด๋์ค์ ์๋ ๋ฉ์๋๋ฅผ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ค์ ๋ง๋๋ ๊ฒ
- ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋ ๋์ ์ค๋ฒ๋ผ์ด๋ฉํ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- ๋ฉ์๋๋ฅผ ์์ ํด์ผํ ๋ ์ฌ์ฉํ ์ ์๋ค.
class SafeCal(Calculator):
def div(self):
if self.second == 0:
return 0
else:
return self.first/self.second
Source
'Language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] csvํ์ผ data๋ค MySQL table์ insert ํ๊ธฐ - pymysql, csv (0) | 2022.09.26 |
---|---|
[Python] requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2022.07.10 |
[Python] ์ ์ถ๋ ฅ (0) | 2022.06.22 |
[Python] ๋ด์ฅํจ์ (0) | 2022.06.17 |
[Python] ๊ธฐ๋ณธ ๋ฌธ๋ฒ - ํจ์ (0) | 2022.06.15 |