파이썬 - 클래스

jaybon·2022년 10월 26일
1

파이썬

목록 보기
8/20

클래스 Class

현실에서는?

수업?
학급?
계급?
품격?

  • 우리 클래쓰에서는 이런 강의를...
  • 이태원클라쓰?
  • 폼은 일시적이지만 크라쓰는 영원하다?
  • 음악은 클래식이지...
  • 이번 비행기 좌석은 퍼스트클래스...

개발에서는 타입을 의미한다.

동물, 고양이, 개, 인간
식물, 소나무, 옥수수
물건, 책상, 의자

객체?

object

물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말한다.
예를 들어 물리적으로 존재하는 학생, 회원 등과 추상적인 생산, 주문, 배송 등이 모두 객체가 될 수 있다.

객체지향?

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.

카페에서의 객체

  • 손님
  • 직원
  • 커피기계
  • 커피

...등등

객체지향의 특징

  • 추상화
    필요한 정보를 중심으로 간소화
    ex) 지하철 노선도
  • 캡슐화 + (정보은닉)
    데이터나 기능을 그룹화
    ex) 차는 속도가 있으며 가속, 감속이 가능하다.
  • 상속
    어떤 대상의 데이터나 기능을 물려받는다.
    ex) 의자의 하위개념인 시디즈의자는 '무언가를 앉힐 수 있다'라는 기능을 물려 받는다.
  • 다형성
    어떤 대상은 다양한 형태가 될 수 있다.
    ex) 음식에는 라면, 삼겹살 등이 있다.

클래스 class?

어떠한 대상의 설계도 또는 명세

의자의 구성, 기능 등을 설명

오브젝트 object?

구현되지 않은 대상 (생각이나 상상)

의자를 머리 속으로 상상

인스턴스 instance?

구현된 대상 (실체)

실제 의자

객체의 구성

필드

객체의 정보

메소드

객체의 기능

파이썬 객체 만들기

Animal

추상화, 캡슐화

class Animal:

    count = 0

    def __init__(self,
                 age: int = 0
                 ):
        """

        Args:
            age (int, optional): 동물의 나이. 기본값은 0.
        """

        self.age = age

        self.name = f"{Animal.count}번"

        Animal.count = Animal.count + 1

        return

    def eat(self):
        print(f"동물 {self.name}이 음식을 먹었습니다.")

    def get_age(self):
        print(f"동물 '{self.name}'의 나이는 {self.age}살 입니다.")

    @classmethod
    def get_count(cls):
        print(f"동물이 {cls.count}마리 생성되었습니다.")

    @staticmethod
    def hello():
        print(f"동물 농장에 오신 것을 환영합니다.")

Cat

상속, 다형성

from animal import Animal


class Cat(Animal):

    count = 0

    def __init__(self,
                 name: str = "냥",
                 age: int = 0
                 ):
        """

        Args:
            name (str, optional): 고양이의 이름. 기본값은 "냥".
            age (int, optional): 고양이의 나이. 기본값은 0.
        """

        super().__init__(age)

        self.name = name

        Cat.count = Cat.count + 1

        return

    def eat(self):
        print(f"고양이 '{self.name}'이 음식을 먹었습니다.")

    @classmethod
    def get_count(cls):
        print(f"고양이가 {cls.count}마리 생성되었습니다.")

사용

from animal import Animal
from cat import Cat

Animal.hello()

print()

a = Animal(12)
b = Cat("나옹", 5)

a.eat()
b.eat()

print()

a.get_age()
b.get_age()


print()

Animal.get_count()
Cat.get_count()

# 동물 농장에 오신 것을 환영합니다.

# 동물 0번이 음식을 먹었습니다.     
# 고양이 '나옹'이 음식을 먹었습니다.

# 동물 '0번'의 나이는 12살 입니다.
# 동물 '나옹'의 나이는 5살 입니다.

# 동물이 2마리 생성되었습니다.
# 고양이가 1마리 생성되었습니다.

추가

https://wikidocs.net/16075

https://wikidocs.net/16076

참고자료

https://computer-science-student.tistory.com/288

https://jimmy-ai.tistory.com/79

https://firework-ham.tistory.com/101

profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글