본문 바로가기
Python

[Python 기초] 클래스 (Class)

by Air’s Big Data 2020. 4. 6.

클래스(Class)

클래스를 사용하는 이유는 추상화된 현실의 개념을 구체적인 파이썬 코드로 표현하기 위해서 사용한다. 

우리 집 고양이, 김 블루양

 

 

  • 고양이 도면  → 클래스 (class) / 고양이 도면으로 만든 고양이 → 인스턴스 (Instance)
  • 인스턴스 (Instance) : 색, 이름, 나이 등 구체적인 값을 가짐
  • 속성(Property, Attribute) : 색, 이름, 나이 등
  • 행동(Method) : 잔다, 먹는다, 꾹꾹이를 한다 등

 

 

인스턴스(Instance)와 객체(Object)

"객체 a는 고양이의 인스턴스이다"

 인스턴스라는 말은 특정 객체(a)가 어떤 클래스(고양이)의 객체인지를 관계 위주로 설명할 때 사용한다.

 

상속

 

 

  • 고양이 도면에서 개념들을 '상속' 받아 비슷한 고양이들을 만든다. → 하위 클래스 (Sub Class)
  • 상위 클래스 or 부모 클래스(Class)에서 상속 받은 하위 클래스 or 자식 클래스 (Sub Class)
  • 하위 클래스도 '클래스'이기 때문에 인스턴스를 만들어서 사용한다.

 

클래스(Class) 정의 하기

class 클래스 이름 :

      <statement-1>

    ...

   <statement-n>

클래스 정의하기  인스턴스 변수와 메소드 구현

class Cat:
    def meow(self): #meow() 메소드 정의
        print("야옹")

 

인스턴스 생성과 메소드 호출하기 

.(마침표) 연산자 사용

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

cat1.meow = Cat() #메소드 호출

예시

class Cat:
    def meow(self):
        print("야옹")
    def sing(self): #두번째 메소드
        self.meow() #자기자신(self)의 메소드 호출
        print("미야옹")

cat1 = Cat()

cat1.sing()

야옹

미야옹

 

인스턴스 변수 생성

class Cat:
    def info(self): #info() 메소드
        self.name = "블루" #인스턴스 변수 name 생성
        self.color = "회색" #인스턴스 변수 color
        print('고양이 이름은', self.name, '색깔은', self.color)


cat = Cat() #인스턴스 생성
cat.info() #인스턴스의 메소드 실행

고양이 이름은 블루 색깔은 회색

 

Self

self는 클래스의 인스턴스를 지칭하며 self 키워드 클래스의 메소드와 속성에 접근할 수 있다.

모든 메소드의 첫 번째 매개변수는 자기 자신을 가르키는 self이다. 즉, 이 메소드를 호출한 현재 객체를 의미한다.

 

초기화

__init__ : 어떤 값을 미리 잡아 놓는 것을 초기화라고 합니다. self를 받으며 객체의 내부에서 사용할 속성을 초기화 합니다. 

class Cat:
     #생성자 혹은 초기화 메소드라 한다.
    def __init__(self, name, color):
        self.name = name #self.name 변수는 각각 cat1, cat2 인스턴스의 name을 가리킴
        self.color = color 
        
    #고양이 클래스의 정보를 출력하는 메소드
    def info(self):
        print('고양이 이름은', self.name, '색깔은', self.color)
        
cat1 = Cat("블루","회색") #cat1 인스턴스 생성
cat2 = Cat("미미","갈색") #cat2 인스턴스 생성

cat1.info()
cat2.info()

고양이 이름은 블루 색깔은 회색

고양이 이름은 미미 색깔은 갈색

 

클래스를 만들면서 값들을 바로 지정을 하는 방법

class Person:

    def __init__(self, name, age, live):

        self.name = name  

        self.age = age

        self.live = live

me=Person("Oggy",29,"Seoul") 

me.name

 

 

출처 : 점프투파이썬(https://wikidocs.net/28), 영욱 스튜디오(https://youtu.be/5RL-BcWBC8o), Park널널한교수(https://youtu.be/QCNkJ3SaZhk)

 

 

 

댓글