일시 : 2018.01.09 11 : 20 ~ 14 : 00
내용 : chap 11 객체지향 中 생성자, 변수, 상속
//
객체 지향
생성자
myCar = Car() 로 인스턴스를 생성하면 무조건 호출(init)되는 메소드
_init_() 라는 이름 가짐. 인스턴스 생성과 동시에 필드값 초기화
기본 생성자 : 매개변수가 self만 있는 생성자
def _init_(self) :
self.color = "red"
self.speed = 0
매개 변수가 있는 생성자 : 매개변수로 초기값을 넘겨서 인스턴스 생성
def _init_(self, value1, value2) :
self.color = value1
self.speed = value2
메인코드에서 myCar = Car("red", 0) 으로 매개변수로 초기값 넘겨줌
name, speed 필드 대신 getName(), getSpeed() 메소드에서 값을 반환하여 사용 가능
del _del_()는 소멸자
변수
인스턴스 변수 : 객체마다 가지고 있는 변수
=> 클래스에 변수 공간 할당 x, 인스턴스가 생성되어야 인스턴스 변수에 공간 할당\
클래스 변수 : 객체들이 함께 공유하는 변수( 한 메모리 공간을 공유)
=> 클래스 안에 공간이 할당, 인스턴스에서는 별도 공간 할당X
ex ) count(자동차 개수, init()함수에서 인스턴스 생성 시 마다 1씩 증가하도록)
★★ 클래스 변수에 접근 : '클래스이름.클래스변수명' or '인스턴스.클래스변수명'
ex) Car.count or myCar2.count
클래스 상속(Inheritance)
기존 클래스를 물려받아 새로운 클래스를 만듦
부모클래스(Super class) - 자식클래스(Sub class)
공통된 것들을 부모클래스로 만들고 상속 받아 세부사항 추가
ex 부모클래스 (자동차) : 색상 속도 등
자식클래스1 : 승용차 -> 부모클래스 특징 + 좌석수 등
자식클래스2 : 트럭 -> 부모클래스 특징 + 적재량 등
상속받을 때는 class 서브 클래스(상속받을 슈퍼클래스) : // 서브 내용 작성
메소드 오버라이딩(Overriding)
상위 클래스의 메소드를 하위 클래스에서 재정의
예를 들면 Car 클래스에서 speed()메소드를 서브클래스에서 속도를 제한하는 코드를 추가하여 메소드 오버라이딩
실습
11-08
class Car:
speed = 0
def upSpeed(self, value):
self.speed += value
print("현재 속도(슈퍼 클래스) : %d" % self.speed)
class Sedan(Car):
def upSpeed(self, value):
self.speed += value
if self.speed > 100:
self.speed = 80
print("현재 속도(서브 클래스) : %d" % self.speed)
##메인 코드
myCar1 = Car()
myCar1.upSpeed(150)
myCar2 = Sedan()
myCar2.upSpeed(150)
print("car1 speed : %s " % (myCar1.speed))
print("car2 speed : %s " % (myCar2.speed))
'2017 멀티캠퍼스 > Python' 카테고리의 다른 글
[Python] 날씨 API 받아오기 (0) | 2018.01.16 |
---|---|
[Raspberry Pi/Python] 현재 시간 FND에 출력하기 (0) | 2018.01.16 |
[Python] #13 파이썬 객체 지향 : 클래스 (0) | 2018.01.14 |
[Python] #12 파이썬 파일 입출력 (0) | 2018.01.14 |
# 파이썬 사후 평가 오답 (0) | 2018.01.11 |