클래스
- 형식을 정의
- 속성과 데이터를 변형하는 함수를 같은 namespace 에 묶음
인스턴스
객체지향 프로그래밍의 특징
- 추상성: 꼭 필요한 부분만 구현
- 상속성: 부모 클래스에서 공통부분을 상속 받음
- 다형성
- 동일한 인터페이스에 대해 구체적인 인스턴스마다 다른 동작을 할 수도 있음
- 상속받은 메소드의 바디를 덮어쓰기
- Overrride
클래스 정의
class 클래스명(상위클래스):
"""
클래스에 대한 설명
"""
def 함수명(self, 인자1, 인자2, ...):
statement
...
return
인스턴스 객체 멤버 변수 이름 해석 순서
- 인스턴스 객체 내부
- 클래스 객체 내부
- 전역 공간
클래스에 새로운 멤버 변수 추가 방법
class_name.맴버변수명 = "초기값"
인스턴스 객체에 동적으로 멤버 변수 추가 방법
instance_name.맴버변수명 = "입력값"
- 클래스에 멤버 변수 추가와 다르게, 추가된 인스턴스에서만 접근 가능
상속
class Person:
...
class Customer(Person):
def __int__(self, name, phoneNumber, product, ID):
# 부모 클래스의 생성자 호출
Person.__init__(self, name, phoneNumber)
self.product = product
self.ID = ID
다중 상속
- 2개 이상의 부모 클래스를 상속
- 이름 충돌(name conflict) 해결
- 상속 받은 매소드명이 동일할 경우, 먼저 상속된 것으로 처리
class 클래스(부모1, 부모2):
def 매소드(self):
...
def 매소드(self):
...
인스턴스 = 클래스()
인스턴스.매소드() # = 부모1's 매소드 적용