2017 멀티캠퍼스/Python

[Python] #14 파이썬 객체 지향 : 생성자와 상속

꿈꾸는어린이 2018. 1. 14. 01:27

//

일시 : 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))