객체, 클래스, 상속

이석영·2020년 12월 28일
0

Programmers

목록 보기
27/47
post-thumbnail

django를 사용하면서 클래스와 상속에대한 개념이 자주 나오는데 솔직히 이론이나 정의만 들어서는 잘 와닿지 않고 이해가 안되었다. 그래서 무료 동영상 강의를 찾아 직접 예제 따라하면서 class와 상속이 어떻게 이루어지는지 코드를 작성해보았다. 작성하면서 내가 나름 이해한 것들은 주석으로 정리했다.

참고사이트
[Python] 객체 지향 프로그래밍과 클래스 (Object-Oriented Programming and Class in Python)

## 객체를 생성하기위해 클래스를 만듬, 객체의 속성과 행위를 정의하는 것
## 첫글자는 대문자로 쓴다.
class Car():

## __init__ : 객체의 속성을 초기화
## 파이썬에서는 메소드를 호출할 때 인스턴스 자신을 첫번째 인자로 사용한다.
## 여기서는 뒤에 인스턴스 ferrari를 생성했기 때문에 self인자에 ferrari가 들어갔다고 생각하면 됨
  def __init__(self, **kwargs):
  	## properties를 초기화 해준다.
    self.windows = 4
    self.wheels = 4
    self.seats = 4
    self.color = kwargs.get('color', 'black')
    self.price = kwargs.get('price', '$20')

## 클래스 안에(들여쓰기했을 때) 정의된 함수를 메소드라고 한다.
## __str__ : 클래스의 인스턴스를 리턴하는 값으로 대체해준다.
  def __str__(self):
    return '페라리'
    
## 또 다른 클래스 Convertible을 생성
## 클래스 Car를 상속받음, 상속을 받으면  부모 클래스인 Car의 메소드를 모두 사용할 수 있다.
class Convertible(Car):
  ## __init__을 재정의 했기 때문에 기존에 Car에서 정의한 것은 사용할 수 없다. super()를 사용하는 이유
  def __init__(self, **kwargs):
    ## 부모 클래스(Car)의 속성(properties)을 모두 가져올 수 있음
    super().__init__(**kwargs)
    self.time = kwargs.get('time', 10)

  def take_off(self):
    return "taking off"

  def __str__(self):
    return '포르쉐'

## 인스턴스 생성
porche = Convertible(color='red', price='$40')
## 바로 위에 지정한 값들을 출력
print(porche.color, porche.price)
porche.take_off()

## Car 클래스를 상속받았기 때문에 wheels의 속성을 사용가능하다.
porche.wheels

## __str__ 메소드가 인스턴스를 받아 리턴해주는 것을 출력해준다. //출력 : '포르쉐'
print(porche)


## class안의 모든 property를 보여줌
# print(dir(Car))

## instance 생성
ferrari = Car()
## **kwargs는 인자를받아 딕셔너리로 전달하는데 위에서 get함수를 사용해 defualt로 color:black, price: $20을 주었다. 
## 따라서 defualt값을 출력할 것이다.
print(ferrari.color, ferrari.price)
## //출력 : '페라리'
print(ferrari)
profile
원하는 대로 살자

0개의 댓글