파이썬에도 C++, Java와 같이 클래스라는 개념이 존재하고, 객체 지향의 개념이 존재한다.
클래스라는 개념을 처음부터 설명하는건 무리가 있어 보이고, 파이썬에서 어떻게 이용하는지 간단한 예제를 통해 알아보려 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #-*- coding: CP949 -*- # 클래스 # 클래스 선언 및 함수 정의 class fruit: def apple(self): return 'apple is red' # fruit 객체 생성 f = fruit() a= f.apple() print a print f.apple() # 클래스 선언 및 변수, 함수 정의 class man: height = 100 weight = 200 vital = 300 def getProfile(self): return self.height + self.weight + self.vital + 1000 # self를 통해 클래스의 객체를 구분한다. def upgrade(self): self.height += 10 self.weight += 20 self.vital += 30 # man 객체 생성 kkw = man() # kkw 객체 내의 함수 호출 print kkw.getProfile() print kkw.height, kkw.weight, kkw.vital # 객체 내의 변수 연산 kkw.upgrade() print kkw.getProfile() // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
처음 클래스에서는 fruit라고 클래스명을 지정했다.
이때 f = fruit()를 하는 순간 객체 f를 생성했다고 할 수 있다.
a = f.apple()를 하면 fruit 클래스에서는 def apple(self)로 들어간다.
self는 자바에서의 this와 매우 유사한 역할을 하고, 객체 자신을 가르키게 된다.
항상 self는 첫 매개변수로 넣어준다고 생각하면 좋다.
아래 man 클래스도 위의 fruit와 똑같은 개념이다.
getProfile에서는 self.변수명을 통해 객체가 가진 변수호출이가능하고, upgrade에서는 객체 내의 변수 값 변경이 가능함을 보여준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #-*- coding: CP949 -*- # 상속 class human: eyes = 2 nose = 1 mouth = 1 ears = 2 def eat(self): print '먹고있다..' def sleep(self): print '자고있다..' def hear(self): print '듣고있다..' # man 클래스는 human 클래스를 상속 받는다. class man(human): def walk(self): print '걷고있다..' kkw = man() kkw.hear() kkw.walk() print kkw.nose print '' www = human() www.eat() www.walk() # 이 부분에서 오류가 생긴다. # man이 human을 상속받았지, human이 man을 상속받지는 않았다. // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
두번째로 상속에 관한 내용이다.
human 클래스를 위와같이 설정하고, 아래에는 class man(human)을 통해 man이 human을 상속 받도록 해준다.
이제 kkw라는 객체를 생성하면 human, man에 있는 모든 변수, 함수를 이용할 수 있게 된다.
kkw.hear(), kkw.walk()를 하면 최종적으로 human의 함수와 man의 함수가 이용가능함을 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #-*- coding: CP949 -*- # 클래스 속 객체 class phone: app =[] def install(self, name): self.app.append(name) print name,'설치 완료' def delete(self, name): chk = False for i in self.app: if name in i: self.app.remove(i) print name,'삭제 완료' chk = True if not chk: print name,'은 존재하지 않는 앱입니다.' sp = phone() print '현재 앱 종류 : ', sp.app sp.install('lin') # 객체 속 객체를 이용 print '현재 앱 종류 : ', sp.app sp.delete('lin2') sp.delete('lin') print '현재 앱 종류 : ', sp.app sp.delete('lin') // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
아래 내용은 위와 별 다른내용이 없지만, 클래스 내에서 또다른 객체가 생성될 수 있음을 알려주는 기본적인 코드이다.
app = []이라는 리스트 객체가 형성되어있으므로 phone는 클래스로 자신이 객체가 될것임에도 불구하고 app이라는 리스트 객체를 또 생성하게 된다.
위 코드의 결과를 보면 결국 install('lin')을 통해 lin이 app 리스트에 append되고, delete('lin')을 통해 lin이 list에서 삭제가 될 수 있다.
'Basic > Python' 카테고리의 다른 글
파이썬 GUI 자식 객체 파괴(destroy) (2) | 2017.07.16 |
---|---|
파이썬 GUI 라벨, 버튼 사용법 (0) | 2017.07.16 |
파이썬 피보나치, 등차수열, 등비수열, 계차수열 예제 (4) | 2017.07.12 |
파이썬 sort, sorted 정렬 예제 (0) | 2017.07.12 |
파이썬 dictionary 전체 메소드 설명 및 예제 코드 (0) | 2017.07.12 |