본문 바로가기
IT/Python

도레미 파이썬: 객체

by 무녈 2021. 6. 16.

자료의 출처는 엘리스 AI 트랙(https://aitrack.elice.io/courses/) '도레미 파이썬'  이며, 학습 후 정리한 내용입니다.

⚡️올바르지 않은 내용이 있을 경우 댓글로 남겨주시면 감사하겠습니다.⚡️


수강 목표

  • 객체가 무엇인지 이해한다.
  • 클래스와 인스턴스 사이의 관계를 이해한다.
  • 객체지향 프로그래밍이 도입된 이유를 이해한다.

객체의 세계로

객체지향 프로그래밍

객체

성질(변수)할 수 있는 행동(함수)이 담긴 자료

클래스와 인스턴스

클래스(class)

객체를 만들 수 있는

클래스 생성

class 클래스 이름:

class Human:

필드(Field)

객체가 가지고 있는 성질

= 객체가 가지고 있는 변수

class Human:
    name = "Bob"
    age = 10

메서드(Method)

# 짝꿍이 있는 함수 (짝꿍 = 객체)

객체가 할 수 있는 행동

= 객체가 할 수 있는 함수

class Human;
    def exercise(self):
    	print("스쿼시!")

self

메서드라면 가져야하는 첫번째 매개변수

메서드에서 self는 객체 자신을 의미하며, 메서드가 호출될 때 self 자리에 객체 자신을 인자에 넣는다.

인스턴스(Instance)

객체를 만들 수 있는 틀(클래스)로 찍어낸 객체

클래스와 인스턴스

붕어빵 틀 = 클래스

팥 붕어빵, 슈크림 븅어빵 = 인스턴스

인스턴스 만들기

인스턴스 이름 = 클래스 이름()

bobby = Human()

인스턴스의 변수(#필드)

인스턴스.변수

bobby = Human()
bobby.name # Bob
bobby.age # 10

인스턴스의 메서드

인스턴스.메서드()

bobby = Human()
bobby.exercise() # 스쿼시!

왜 객체지향 프로그래밍인가?

기존의 코딩스타일로는 표현할 수 없었던 상황을 표현 가능하게 해준다.

포O몬 클래스 생성

- 포O몬이라면 가져야할 특징(필드)은? 이름, 체력, 타입 등

- 포O몬이라면 할 수 있는 능력(행동)은? 각 포O몬의 기술

 

클래스 선언, 변수메서드 추가

class Poxxmon:
    p_name = ""
    p_hp = 0
    p_type = ""
    
    def skill(self):
        pass

피O츄 클래스 생성

피O츄의 특징은? '피O츄', '성비 5:5'. '전기'

피O츄의 능력은? 10만 볼트!

 

Poxxman 클래스를 상속하는 Pixxchu 클래스 생성

class Pixxchu(Poxxmon):
    p_name = "Pixxchu"
    p_hp = 50
    p_type = "Electric"
    
    def skill(self):
        print("10만 볼트!")

피O츄 인스턴스 생성

Pixxchu 클래스로 찍어 낸 pixx 인스턴스

pixx = Pixxchu()
pixx.skill() # 10만 볼트!
print(pixx.p_hp) # 50

왜 객체지향 프로그래밍인가?

상속, 다형성, 캡슐화를 통해 

코드의 재사용이 쉽고

우리 실생활을

더 잘 나타낼 수 있기 때문이다!

 

상속: 한 클래스의 내용을 다른 클래스가 이어받는 것

class Car:
    type = "자동차"
        
class Hyundai(Car):
    pass
        
sonata = Hyundai()
print(sonata.type) #자동차

# 마치 부모와 자식처럼 코드를 관리 가능

# 현실 세계의 객체 구조와 유사

 

다형성: 같은 모양의 코드가 다른 역할을 하는 것

class Car:
    type = "자동차"
    horsePower = 100
        
class Lamborghini(Car):
    horsePower = 700
        
aventador = Lamborghini()
print(aventador.type) #자동차
print(aventador.horsePower) #700

# class마다 가지는 값이 다르다.

# 같은 이름으로 각 객체의 값을 관리할 수 있음.


 

요약

객체는 성질할 수 있는 행동을 담은 자료

클래스는 객체를 만들 수 있는

인스턴스는 클래스로 만든 객체

객체지향 프로그램의 장점

 

반응형

댓글