-
Python 문법 기초 24 - class 포함관계(1)Python 2022. 10. 22. 17:00
# 클래스의 이해 kor = 100 # 전역 변수(소속이 모듈) def abc(): # 함수(소속이 모듈) a = 10 # 지역변수(소속이 abc 함수) print('함수') class MyClass: # 클래스(소속이 모듈) kor = 90 # 멤버변수(소속이 MyClass 클래스 소속) """ def __init__(self): pass """ def abc(self): print('메소드') def show(self): # kor = 80 # 지역변수(소속은 show 메소드) print(self.kor) print(kor) self.abc() # 메소드를 콜 abc() # 함수를 콜 my = MyClass() my.show() <console> 90 100 메소드 함수
self 는 주소를 의미하며 self.abc() 를 입력하면 my의 주소를 가져오며 my의 abc 메소드를 호출한다.
self를 입력하지 않고 abc()만 입력하면 전역함수인 abc()가 호출된다. kor도 마찮가지이다.
class : 새로운 타입을 생성
# class : 새로운 타입을 생성 print('가수 관련 클래스') class singerType: title_song = '화이팅 코리아' def sing(self): msg = '노래는 ' print(msg, self.title_song + ' 랄랄라 ~~~')
# 가수 한 명을 탄생 # import pack2.class4 from pack2.class4 import singerType def process(): # youngwoung = pack2.class4.singerType() youngwoung = singerType() print('영웅의 타이틀 송 : ', youngwoung.title_song) youngwoung.sing() def process2(): bts = singerType() # 생성자 호출(실행해라) # bts = singerType # 주소를 호출 bts.sing() bts.title_song = '최고의 순간은 아직' bts.sing() bts.co = 'HIVE' print('소속사 : ', bts.co) print() blackpink = singerType() blackpink.sing() blackpink.title_song = '셧다운' blackpink.sing() if __name__ == '__main__': process() print('--------') process2() <console> 가수 관련 클래스 영웅의 타이틀 송 : 화이팅 코리아 노래는 화이팅 코리아 랄랄라 ~~~ -------- 노래는 화이팅 코리아 랄랄라 ~~~ 노래는 최고의 순간은 아직 랄랄라 ~~~ 소속사 : HIVE 노래는 화이팅 코리아 랄랄라 ~~~ 노래는 셧다운 랄랄라 ~~~
class를 생성한다. 다른 모듈 파일에서 import 해서 사용 가능하다.
생성자를 호출할때마다 각기 다른 고유의 주소를 가진 객체들이 생성되고, class 의 값들은 생성된 객체의 값마다 다를 수 있다. 또한 원본 class에 없는 변수도 추가 가능하다. 다만 메소드는 추가 불가능하다.
예제 1)
# 클래스는 다른 클래스를 불러다 사용 가능 # 클래스의 포함관계(has a) class Pohamhandle: # 핸들이 필요한 어떤 클래스에서든 호출 가능 quantity = 0 # 회전량 def LeftTurn(self, quantity): self.quantity = quantity return '좌회전' def RightTurn(self, quantity): self.quantity = quantity return '우회전' # ... # 자동차를 위한 여러 부품을 별도의 클래스로 제작 : 생략 # 핸들이 필요할 때마다 만들어 둔 클래스를 가져다 사용 # 완성제품 클래스 class PohamCar: turnShowMessage = '정지' def __init__(self, ownerName): self.ownerName = ownerName self.handle = Pohamhandle() # 클래스의 포함 def TurnHandle(self, q): if q > 0: self.turnShowMessage = self.handle.RightTurn(q) elif q < 0: self.turnShowMessage = self.handle.LeftTurn(q) elif q == 0: self.turnShowMessage = '직진' self.handle.quantity = 0 if __name__ == '__main__': tom = PohamCar('톰') tom.TurnHandle(10) print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity)) tom.TurnHandle(0) print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity)) tom.TurnHandle(-1) print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity))
'Python' 카테고리의 다른 글
class 포함관계 예제 (0) 2022.10.22 Python 문법 기초 25 - class 포함관계(2) (0) 2022.10.22 Python 문법 기초 23 - class(import 사용) (0) 2022.10.22 Python 문법 기초 22 - 모듈(module) (0) 2022.10.22 Python 문법 기초 21 - 재귀 함수(Recursive function) (0) 2022.10.22