데이터 분석

객체지향 프로그래밍

temporubato108 2024. 9. 10. 16:31

이미지출처 : https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/

 

 

 

객체

  • 성질과 할 수 있는 행동이 담긴 자료

예를 들어, '철수'라는 인물이 있다고 할 때

철수의 이름, 나이, 사는 곳, 취미 등이 성질(변수)

철수의 밥 먹기, 운동하기, 잠자기 등이 행동(함수)에 해당한다.

 

 

클래스 생성

  • 클래스 안에는 필드와 메서드가 채워진다.
  • 필드와 메서드는 해당 클래스로 찍어낼 인스턴스의 특징이 된다.
class 클래스 이름:
class Cat:

 

 

필드

  • 객체가 가지고 있는 성질(변수)
class Cat:
    name = "Bongsu"
    age = 10

 

 

메서드

  • 객체가 할 수 있는 행동(함수)
class Cat:
    def eat(self): #self -> 매서드(함수)의 첫번째 매개변수
    print("냠냠")

 

클래스는 흔히 '틀'로 많이 비유된다.

인스턴스는 틀(클래스)로 찍어낸 객체를 말한다.

예를 들어, 붕어빵 틀은 클래스이고,

팥붕어빵, 슈크림붕어빵, 피자붕어빵은 인스턴스에 해당한다.

 

 

인스턴스 만들기

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

 

 

인스턴스의 변수

인스턴스이름.변수이름
bongsu = Cat()
bongsu.name # Bongsu
bongsu.age # 10

 

 

인스턴스의 메서드

인스턴스이름.메서드()
bongsu = Bongsu()
bongsu.eat() # 냠냠

 

 

인스턴스 만들기 예시

# class Cat 생성
class Cat:
    name = ""
    age = 0

    def exercise(self):
        return "우다다"
        
# instance bongsu
bongsu = Cat()
bongsu.name = "Bongsu"
bongsu.age = 10

print(bongsu.name) # Bongsu
print(bongsu.age) # 10

 

상속하기

  • 한 클래스의 내용을 다른 클래스가 이어 받는 것
class 상속받을클래스(상속할클래스):
class Pet: # Pet 클래스 생성
    attr = "cute"
    def cry(self):
        return "야옹"
        
class Cat(Pet): # Pet클래스를 상속받았으므로
    pass        # 아무것도 적지 않아도 필드와 메서드가 들어있다

bongsu = Cat() # 인스턴스 bongsu 생성

print(bongsu.attr) # cute
print(bongsu.cry()) # 야옹

# Pet클래스를 상속받은 Cat클래스로 bongsu 인스턴스를 만들었으므로
# Pet클래스의 정보가 print된다.

 

다형성

  • 같은 모양의 코드가 다른 역할을 하는 것
  • 다형성을 통해 유사한 역할을 하는 필드와 메서드를 같은 이름으로 관리할 수 있다.
  • 프로그램 관리가 쉬워지고, 코드의 길이가 줄어든다.
class Animal: # Animal 클래스 생성
    legs = 0
    def walk(self):
        return ""

class Cat(Animal): # Animal 클래스를 상속받는 Cat클래스 생성
    legs = 4       # 같은 필드, 메서드에 다른 내용을 입력할 수 있다.(다형성)
    def walk(self):
        return "사뿐사뿐"

class Human(Animal): # Animal 클래스를 상속받는 Human클래스 생성
    legs = 2         # 같은 필드, 메서드에 다른 내용을 입력할 수 있다.(다형성)
    def walk(self):
        return "뚜벅뚜벅"

bongsu = Cat() # Cat클래스의 인스턴스 bongsu 생성
WH = Human() # Human클래스의 인스턴스 WH 생성

print(bongsu.legs) # 4
print(bongsu.walk()) # 사뿐사뿐

print(WH.legs) # 2
print(WH.walk()) # 뚜벅뚜벅

 

또 다른 예시코드

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

 

파이썬이 객체지향 언어임을 쉽게 확인하는 방법

  • 파이썬은 객체 단위로 정보를 관리한다.
  • 객체는 Value와 Type 속성을 가지고 있다.
n = 1987

print(n) # 1987
print(type(n)) # <class 'int'>

nums = [1,2,3]

print(nums) # [1,2,3]
print(type(nums)) # <class 'list'>