코드 해석과 if self.isOpened: 이부분이 뭘 의미 하는지 궁금합니다.
조회수 1294회
class Fridge: isOpened = False foods = []
def open(self):
self.isOpened = True
print '냉장고 문을 열었어요...'
def put(self, thing):
if self.isOpened:
self.foods.append(thing)
print '냉장고 속에 음식이 들어갔네...'
else:
print '냉장고 문이 닫혀있어서 못넣겠어요...'
def close(self):
self.isOpened = False
print '냉장고 문을 닫았어요...'
class Food: pass
이 코드에서
def put(self, thing):
if self.isOpened: ===> 이부분이 의미하는 건 뭔가요? False인지 True 인가요?
왜 저렇게 쓰였는지 궁금하네요..
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
간단 설명
class Fridge: def put(self, thing): if self.isOpened: # <== 이렇게 적으면
class Fridge: isOpened = False # <== 이걸 찾습니다. # 이건 각각의 Fridge마다 있습니다.
자세히
myFridge1 = Fridge() myFridge2 = Fridge()
냉장고 두 대를 만들었습니다. 냉장고 1과 냉장고 2네요. 냉장고 1과 냉장고 2는 서로 다른 사물입니다. 냉장고 1과 냉장고 2를 스스로 지칭하는
self
는 어떤 냉장고이냐에 따라 달라지겠죠.myFridge1.isOpened myFridge2.isOpened
위의
isOpened
는 냉장고 1이 열려있는지 여부이고, 아래의isOpened
는 냉장고 2가 열려있는지의 여부입니다..
기호는 왼쪽 대상에서 오른쪽 대상(이름)을 찾아볼 때 씁니다.함수를 정의할 때 항상 첫번째 인자로
self
를 썼습니다. 한 번 안 써보도록 합시다.class Fridge: isOpened = False def shake(): if isOpened: print("효과는 상당했다!") else: print("잘 안 흔들린다...")
그리고 흔들어 볼까요.
myFridge1.shake()
shake()
안에 있는 isOpened를 봅시다. 이렇게 흔들면 흔드는 당시에 당췌 isOpened가 냉장고 1 건지, 냉장고 2 거인지, 아니면 냉장고라는 개념(클래스) 자체에서 온 것인지 알 수 없게 됩니다.그래서 항상 파이썬에서는 함수를 호출할 때 첫 번째 인자로 누가 이 함수를 부르는지를 전달합니다. 그게
self
입니다. (안 넣어줘도 자동으로 들어갑니다.)이제 어떤 냉장고를 흔들었는지 알 수 있게 함수에 첫 번째 인자로
self
를 넣어보겠습니다.class Fridge: isOpened = False def shake(self): if self.isOpened:
myFridge1.shake()
이제
def shake()
함수 안에서self.isOpened
라고 썼으므로,myFridge1
이self
라는 걸 알 수 있습니다.
댓글 입력