클래스
> 클래스와 객체의 개념
클래스: 객체를 만들기 위한 설계도 (빵틀)
객체: 설계도로부터 만들어낸 제품 (빵)
> 클래스 만들기
class 클래스이름:
def 메서드이름(self):
명령블록
> 클래스 사용하기
인스턴스 = 클래스이름()
인스턴스.메서드()
> 파이썬에서는 자료형도 클래스다
생성자
> 클래스에는 속성과 메서드
속성: 클래스를 설명하는 특징
메서드: 동작을 나타냄
인스턴스. 메서드: 인스턴스 사용
> __init__(self, parameter1, parameter2...): 인스턴스를 만들 때, 반드시 호출되는 메서드
self: 인스턴스 자기 자신을 뜻함
> 인스턴스: 객체가 인스턴스를 포함하는 형태, 인스턴스란 코드 상에서 프로그램이 동작을 할 때, 이 객체가 만들어내는 시점의 객체
상속
> 상속: 클래스들간에 속성이나 메서드를 물려주는 것
> 상속의 개념: 부모클래스에 있는 속성과 메서드를 자식클래스에 그대로 옮길 수 있는 것
-> 클래스들에 중복된 코드를 제거하고, 유지보수를 편하게 하기 위해서 사용
#부모 클래스
class Food:
def __init__(self, name, price, volume):
self.name = name
self.price = price
self.volume = volume
def refund(self):
print(f"[{self.name}]의 물품: [{self.price}]의 가격이 환불되었습니다")
#자식 클래스
class retort(food):
pass #retort는 food에서 상속받은 매서드만 사용했으므로 pass. 그냥 정의만 하고 싶을 때
class baedal(food):
def refund(self): #매서드 오버라이딩
print(f"[{self.name}]의 물품: 배달비를 제외한 [{self.price}]의 가격이 환불되었습니다")
mandu = retort("만두", 3000, 100)
mandu.refund() #부모 클래스에 있는 refund 사용
galbitang = baedal("갈비탕", 30000, 1300)
galbitang.refund() # baedal에서 재정의된 매서드 오버라이딩된 refund 사용
> 생성자 오버라이딩
- 예제: 위의 배달 (baedal) 클래스에 배달비 항목도 추가하기
class baedal(food):
# 속성 오버라이딩
def __init__(self, name, price, volume, delivery):
super().__init__(name, price, volume) #super()을 통해 상속받은 부모클래스를 불러와, 부모클래스의 init함수를 호출 가능
self.delivery = delivery #배달 속성값을 추가
def refund(self): #매서드 오버라이딩
print(f"[{self.name}]의 물품: 배달비[{self.delivery}]를 제외한 [{self.price}]의 가격이 환불되었습니다")
> 클래스 변수: 인스턴스들이 모두 공유하는 변수
-> 클래스 변수를 쓸 때는 self를 쓰지 않음. 클래스 자체의 변수이므로 class.변수
'Python' 카테고리의 다른 글
(9)Python: 파일 입출력, 예외 처 (0) | 2022.02.06 |
---|---|
(8)Python: 모듈, 패키지 (0) | 2022.01.25 |
(6) Python: 함수, 튜플, 딕셔너리 (0) | 2022.01.13 |
(5) Python: 제어문 (조건문, 리스트, 반복문) (0) | 2022.01.11 |
(4) Python: 연산, 데이터 입력, 자료형 변환 (0) | 2021.08.26 |