본문 바로가기

Python/왕초보를 위한 파이썬50

7.4. 개체 속의 개체 코끼리를 냉장고에 넣는 방법을 아시나요? 아마 모르시는 분이 없겠죠? 제가 아는 유머는 온 국민이 다 알고 계시니까요. 1번, 냉장고 문을 연다. 2번, 코끼리를 넣는다. 3번, 냉장고 문을 닫는다. ^^; 이걸로 프로그램을 한번 짜볼까요? # fridge.py class Fridge: isOpened = 0 foods = [] def open(self): self.isOpened = 1 print '냉장고 문을 열었어요...' def put(self, thing): if self.isOpened: self.foods.append(thing) print '냉장고 속에 음식이 들어갔네...' else: print '냉장고 문이 닫혀있어서 못넣겠어요...' def close(self): self.isOpen.. 2012. 4. 6.
7.3. 대물림 지난 두 강좌를 통해 객체 지향에 대해 소개해 드렸는데, 여러분은 어떻게 느끼셨는지요. 개념적으로는 이해가 될 듯도 한데, 실제로 프로그램을 작성할 때는 어떻게 적용해야할지 난감해 하시는 분이 많지 않을까 하는 생각도 드는군요. 사실 객체지향의 개념을 제대로 이해하고 활용하기까지는 시간이 좀 걸린답니다. 그러니까 너무 걱정하지 마시고 천천히, 여러 번 반복해서 공부하시기 바랍니다. 아무리 좋은 개념도 갑자기 많이 공부하면 오히려 헷갈리기 쉽지요. 그러니 제가 설명 드리는 것부터 프로그램에 적용시켜 보면서 차근차근 공부하셨으면 합니다. 오늘 알아볼 내용은 객체지향 프로그래밍의 핵심적인 개념 가운데 하나인 상속(inheritance)입니다. 상속이란 어떤 클래스가 다른 클래스의 성질을 물려받는 것을 말하지요.. 2012. 4. 6.
7.2. 변수와 메서드(Method) 지난 시간에 클래스와 객체가 무엇인지 잠깐 살펴보았죠? 실제 세계에 존재하는 실체(instance)를 객체(object)라고 하고, 객체들의 공통점을 간추려서 개념적으로 나타낸 것이 클래스(class)라고 했습니다. 어떤 클래스를 만드려면 그 객체가 갖는 성질과 그 객체가 하는 행동을 정의해주면 된다고도 했구요. 요즘 많이 하시는 디아블로II 게임의 아마존이란 캐릭터를 클래스로 표현해 볼까요?class Amazon: str = 20 # 힘 dex = 25 # 기술 vit = 20 # 체력 eng = 15 # 에너지 def attack(self): # 공격하다 return 'Jab!!!' 아마존 클래스가 갖고 있는 힘, 기술, 체력, 에너지라는 네 가지 성질은 변수로 나타내었구요, '공격'하는 행동은 메서.. 2012. 4. 6.
7.1. 클래스와 인스턴스 '김연아'는 실제로 존재하죠? 네, 여러분이 생각하시는 그 김연아 맞아요. ㅎㅎ '에반 라이사첵'도 실제로 존재하죠? 두 사람 다 실제로 존재하는 사람입니다. 두 사람의 공통점은 무엇일까요? 여러 가지를 들 수 있겠지만 둘 다 '스케이터'라는 공통점을 갖고 있지요. '스케이터'라는 단 하나의 사람이나 물건이 실제로 존재할까요? 그렇지는 않습니다. 하지만 우리는 '스케이트 타는 사람’을 '스케이터'라고 말합니다. 이런 것을 객체지향에서는 클래스(class)라고 부릅니다. 우리 말로 옮기기는 쉽지 않지만 '부류'라는 의미로 생각하시면 좋을 것 같아요. 다른 예를 들어볼까요? '사과'는 클래스이구요, '내가 엊저녁에 먹은 사과 다섯 개 중에 두 번째 것'이라고 콕 찍어서 말해주면 인스턴스로 봐줄만합니다. '좋.. 2012. 4. 6.