1์ฃผ์ฐจ ๋ชฉ์์ผ
- Object Oriented Programming
- ํ์ด์ฌ ๋ชจ๋๊ณผ ํจํค์ง
OOP์ ์ค์ํ ๊ฐ๋ 3๋์ฅ
class Parent: # ํด๋์ค ์ด๋ฆ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์ฐ๊ณ , CamelCase๋ก ์ฐ๋ ๊ฒ์ด ๊ด๋ก
def __init__(self, name):
self.name = name
self.surName = 'Brown'
print("Hi, I'm", self.name, self.surName)
class Child(Parent): # Parent ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค๋ ํ์
def __init__(self, name):
super().__init__(name) # ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ์ฌ์ฉ
pa = parent('John')
ch = child('Tommy')
>>> Hi, I'm John Brown
Hi, I'm Tommy Brown # ๋ถ๋ชจ ํด๋์ค์ ์์ฑ surName์ ์์๋ฐ์
class Player:
def __init__(self, name):
self.name = name
def attack(self): # ์ง์
๊ตฐ์ ๋ฐ๋ผ ์คํฌ์ด ๋ค๋ฅด๋ค
print("{0} : I can't!".format(self.name))
class Warrior(Player): # Player๋ฅผ ์์
def __init__(self, name, role):
super().__init__(name)
self.role = role
def attack(self): # ์ง์
๊ตฐ์ ๋ฐ๋ผ ์คํฌ์ด ๋ค๋ฅด๋ค
print("{0}({1}) : Cleave!".format(self.name, self.role))
class Wizard(Player): # Player๋ฅผ ์์
def __init__(self, name, role):
super().__init__(name)
self.role = role
def attack(self): # ์ง์
๊ตฐ์ ๋ฐ๋ผ ์คํฌ์ด ๋ค๋ฅด๋ค
print("{0}({1}) : Fireball!".format(self.name, self.role))
pl_1 = Player('Harry')
pl_1.attack()
pl_2 = Warrior('Jane','Warrior')
pl_2.attack()
pl_3 = Wizard('Andy','Wizard')
pl_3.attack()
>>> Harry : I can't!
Jane(Warrior) : Cleave!
Andy(Wizard) : Fireball!
__
)๋ฅผ ์ฌ์ฉํด์ ๋น์ทํ๊ฒ ๋ง๋ค ์ ์๋ค. (name mangling)class Test:
def __init__(self):
self.a = 'a'
self.__b = 'b'
tester = Test()
print(tester.a)
print(tester.__b) # ์์ด์ฝ! __b๋ ์ธ๋ถ์์ ๋ชป ๋ถ๋ฅธ๋ค!
>>> a
AttributeError: 'Test' object has no attribute '__b'
๋๋(๋๋ธ ์ธ๋์ค์ฝ์ด, __
) ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ ์์ฑ์ ๋ฐ์์ ํธ์ถํ๋ ค๊ณ ํ๋ฉด AttributeError๊ฐ ๋ฐ์ํ๋ค. tester.__b
๋ผ๋ ์์ฑ์ด ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ฌ์ค์...
์ฌ์ค __
๋ฅผ ๋ถ์ด๋ ๊ฒ๊ณผ ํ ์ธ์ด์ private
ํค์๋๋ ๋ค๋ฅด๋ค. private
์ผ๋ก ์ ์ธํ ์์ฑ์ ๋ฌด์จ ์ง์ ํด๋ ์ธ๋ถ์์ ๋ณผ ์ ์๋๋ฐ,
__
๋ฅผ ๋ถ์ด๋ฉด(name mangling) ํ์ด์ฌ์ด ์ด๋ฆ์ '๋ญ๊ฐ'๋ฒ๋ ค์ ํด๋น ์ด๋ฆ์ผ๋ก ํธ์ถํ ์ ์๋ ๊ฒ ๋ฟ์ด์ง ์ฌ์ค ๋ค๋ฅธ ์ด๋ฆ์ด ๋์ด ์ด๋๊ฐ์ ์กด์ฌํ๋ค.
class Test:
def __init__(self):
self.a = 'a'
self.__b = 'b'
tester = Test()
print(dir(tester)) # dir()๋ก ๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ฐ์ด๋ณด๋ฉด..
>>> ['_Test__b', '__class__', (๊ธธ์ด์ ์ค๋ต), 'a'] # ์๋, ์ ๊ฒ ๋๊ตฌ์ผ??
print(tester._Test__b)
>>> b # ์ด๋ฆ์ด ๋ฐ๋ ์ฑ ์ด๊ณ ์์๋ค.
ํด๋์ค ์์ฑ ์์ ๋๋๋ฅผ ๋ถ์ฌ ์ ์ธํ๋ฉด ์ธํฐํ๋ฆฌํฐ๊ฐ ๊ฐ์ฒด._ํด๋์ค๋ช
__๋ณ์๋ช
์ฒ๋ผ ์ด๋ฆ์ ๋ฐ๊ฟ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์์ ๊ฐ์ฒด.__๋ณ์๋ช
์ผ๋ก ํธ์ถํ ์ ์๋ ๊ฒ์ด๋ค!
๊ทธ๋์ ํ์ด์ฌ์์ ์์ ํ ์บก์ํ๋ ๋ถ๊ฐ๋ฅํ๋ค. ํ์ด์ฌ์ ์ฒ ํ์ธ ๊ฑธ๊น?
ํ์ด์ฌ์์ ์ธ๋์ค์ฝ์ด๋ ๋ช ๊ฐ์ง ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
_var
์์ฑ ์์ ์ธ๋์ค์ฝ์ด๋ฅผ ๋ถ์ด๋ ๊ฑด ์ผ์ข
์ ์ฝ์์ธ๋ฐ, ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉํ๋ ๋ณ์๋ผ๋ ๋ป์ด๋ค.
var_
ํ์ด์ฌ ์์ฝ์ด(int, next ๋ฑ ์์ด ๋ณํ๋ ํค์๋๋ค)๋ฅผ ๋ณ์๋ก ์ฐ๊ณ ์ถ์ ๋ ๋ณ์ ์ด๋ฆ ๋ค์ ์ธ๋์ค์ฝ์ด๋ฅผ ๋ถ์ธ๋ค.
__var
์์ฑ ์์ ๋ถ๋ ๋๋๋ ๊ฐ์์ฑ์ ์กฐ์ ํ๊ธฐ ์ํด์ ์ฐ์ธ๋ค. ์ธํฐํ๋ฆฌํฐ๊ฐ ์ด๋ฆ์ ๋ญ๊ฐ์ ๋ด๋ถ์ ์ผ๋ก ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ํด๋์ค ์ธ๋ถ์์ ํด๋น ์ด๋ฆ์ผ๋ก ํธ์ถํ ์ ์๋ค.
__var__
ํน๋ณํ ์ฉ๋๋ก ์ฐ๊ธฐ ์ํด ํ์ด์ฌ์์ ์ ์ํด ๋ ๋งค์ง ๋ฉ์๋์ด๋ค. __main__
, __add__
, __str__
๋ฑ์ด ์๋ค.
__main__
: ํ์ฌ ํ์ผ์ด ์ง์ ์คํ๋ ๊ฑด์ง ๋ชจ๋๋ก์ ๋ถ๋ ค์จ ๊ฑด์ง ํ์ธํ๋ ์ฉ๋๋ก ์ฐ์ธ๋ค.
__add__
: ๋ง์
์ฐ์ฐ์๋ฅผ ์ค๋ฒ๋ก๋ฉํ๋ ๋ฐ ์ฐ์ธ๋ค. int
๋ผ๋ฆฌ ์ฐ์ฐํ๋ฉด ํ๋ฒํ ๋ง์
์ฐ์ฐ์ด์ง๋ง str
๋ผ๋ฆฌ ์ฐ์ฐํ๋ฉด ๋ ๋ฌธ์์ด์ด ์ด์ด์ง๋ ์ด์ ๋ str
ํด๋์ค ๋ด๋ถ์์ __add__
๋ฅผ ์ฌ์ฉํด ๋ง์
์ฐ์ฐ์๋ฅผ ์ค๋ฒ๋ก๋ฉํด๋์๊ธฐ ๋๋ฌธ์ด๋ค.
__str__
: ๊ฐ์ฒด๋ฅผ print()
ํจ์์ ๋ฃ์์ ๋ ๋ญ๊ฐ ์ถ๋ ฅ๋๊ฒ ํ ์ง ์ง์ ํ ์ ์๋ค. int
๊ฐ์ฒด๋ฅผ ํ๋ฆฐํธํ๋ฉด ๊ฐ
์ด ํ์ด๋์ค๊ณ list
๊ฐ์ฒด๋ฅผ ํ๋ฆฐํธํ๋ฉด [๊ฐ, ๊ฐ, ๊ฐ]
์ฒ๋ผ ๊บพ์ ๋ ์ปด๋ง๊ฐ ๊ฐ์ด ํ์ด๋์ค๋ ๊ฑด __str__
๋ฅผ ์ฌ์ฉํด ์ค๋ฒ๋ก๋ฉํด๋์๊ธฐ ๋๋ฌธ์ด๋ค.
import antigravity
ํ์ด์ฌ ๋ชจ๋๋ .py ํ์ผ์ด๋ค. ๊ทธ๋ ๋ค๋ ๊ฒ์ ๊ทธ๋ฅ ์๋ฌด ์ฝ๋๋ ๋ค ๋ชจ๋๋ก ๋ถ๋ฌ์ฌ ์ ์๋ค๋ ๋ง์ด๋ค. ์ฝ๋ ๋ด์์ import myModule
๊ณผ ๊ฐ์ด myModule.py ํ์ผ์ ๋ถ๋ฌ์ค๋ ค๊ณ ์๋ํ๋ฉด,
์ค์ํ ๊ฑด ๋ชจ๋์ ํ์ฌ ํด๋์์ ๊ฐ์ฅ ๋จผ์ ์ฐพ๋๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ ๋ญ๊ฐ ๋ฌธ์ ๋๋ฉด ์ฝ๋๋ฅผ ์ ์ฅํ ๋ ํ์ผ๋ช ์ ๋ด๊ฐ ๋ถ๋ฌ๋ค ์ธ ๋ชจ๋ ์ด๋ฆ๊ณผ ๋๊ฐ๊ฒ ํ๋ฉด ๋ด๊ฐ ์ํ๋ ๋ชจ๋ ๋์ ์ ๊ทธ ์ฝ๋๊ฐ ๋ถ๋ ค์ค๋ ์ผ์ด ์ผ์ด๋๋ค. ์ฃผ์ํ ๊ฒ...
๋ชจ๋์ด ํ๋์ ํ์ผ์ด ์๋๋ผ ํด๋ ์์ ํด๋ ์์ ๋ญ๊ฐ ๋ง ๋ค์ด์๋ ๊ฒฝ์ฐ์๋ ํจํค์ง๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํจํค์ง๋ค ์ค์๋ ๊ท๋ชจ๊ฐ ์์ฃผ ํฐ ๊ฒ๋ ๋ง๋ค. ํจํค์ง ๋ด์ ๋ชจ๋์ ๋ถ๋ฅผ ๋๋ .
์ ์ฌ์ฉํด์ ์ ๊ทผํ๋๋ฐ, from matplotlib.pyplot import *
์ด๋ฐ ์์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๋ค.
์ด๋ ๊ฒ ์ฐ๋ฉด matplotlib
ํจํค์ง ๋ด์ pyplot
๋ชจ๋ ๋ด์ ๋ชจ๋ ๊ฒ์ ๋ค ๋ถ๋ฌ์จ๋ค. ๋ง์ง๋ง์ *
์ ์์ผ๋์นด๋๋ก ์ฐ์ด๋ ๊ทธ ๋ณ์ด๋ค.
๋๋์ ๋งน๊ธ๋ง ์ด์ผ๊ธฐ, ํ์ด์ฌ์๋ private ํค์๋๊ฐ ์๋ค๋ ์๊ธฐ๋ฅผ ์ข ํ๋ค. ๊ฑฐ์ ํ์ด์ฌ๋ง ์ฐ๋๊น ๋ค๋ฅธ ์ธ์ด ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๋ ๊ฒ ์ฌ๋ฏธ์๋ค. ๊ณผ์ ์๊ธฐ๋ฅผ ํ๋ค๊ฐ ์ ๊ทํํ์ ์ด์ผ๊ธฐ๊ฐ ๋์๋๋ฐ ๋ค์ด๋ณด๋๊น ์ ๊ทํํ์์ ์ ์ธ ์ค ์๋ฉด ํธํด์ง๋ ๋ถ๋ถ์ด ๋ง์ ๊ฒ ๊ฐ๋ค. import re