본문 바로가기
Python/Python 고급

Python 파이썬 Class 상속, 메소드, 인스턴스 변수

by 베타코드 2022. 1. 24.
반응형

안녕하세요 독학코딩입니다. 오늘은 파이썬 클래스의 메소드에 대해서 배워보겠습니다. 파이썬의 메소드는 클래스 내에 존재하는 함수로 직역하자면 클래스의 도구 같은 것 입니다. 아래의 예제를 기준으로 설명드리겠습니다.

 

Python Class, 메소드

class My_class():
    def add(self, numA, numB):
        return numA + numB

    def subtract(self, numA, numB):
        return numA - numB

여기서 My_class() 클래스 내에 add()subtract()가 메소드 입니다.

x = My_class()
print(x.add(5, 6))

이런 방식으로 호출하여 사용할 수 있습니다.

 

Python Class, 인스턴스 변수

class My_cat():
    kind = "Korean Short Hair"

    def __init__(self, name):
        self.name = name

인스턴스 변수는 인스턴스별 데이터를 위한 것이고 클래스 변수는 그 클래스의 모든 인스턴스에서 공유되는 어트리뷰트와 메서드를 위한 것입니다. 위의 예시로 설명하자면 kind가 모든 인스턴스르 위한 클래스 변수이고 self.name이 각각의 인스턴스를 위한 인스턴스 변수입니다.

 

쉽게 설명하자면 클래스 변수는 모든 클래스가 공통적으로 갖고있는 변수이고, 인스턴스 변수는 각각의 따로따로 설정할 수 있는 변수인 것입니다.

CatA = My_cat("dami")
print(CatA.kind)
print(CatA.name)

CatB = My_cat("manda")
print(CatB.kind)
print(CatB.name)

위와 같이 kind는 어떤 클래스든 동일하지만 name은 설정하기에 따라 다른걸 확인하실 수 있으실겁니다.

 

 

Python Class, 상속
파이썬에서 클래스를 사용하는 가장 큰 이유가 바로 상속입니다. 그 만큼 중요하니 잘 알아두시길 바랍니다. 상속이라는 것은 말 그대로 한 클래스가 가지고 있는 유산(어트리뷰트)을 다른 클래스에게 상속시켜 주는 행위입니다.

class My_cat():
    kind = "Korean Short Hair"

    def __init__(self, name):
        self.name = name

class Strange_cat(My_cat):
    def __init__(self, name, location):
        My_cat.__init__(self, name)
        self.location = location

CatC = Strange_cat("coco", "under bridge")
print(CatC.kind)
print(CatC.name)
print(CatC.location)

위의 예에서 보시면 Strange_cat()이 인수로 My_cat을 받은 것을 보실 수 있으실 겁니다. 상속은 이렇게 합니다. 또한 My_cat.__init__(self, name)처럼 My_cat의 메소드를 호출하여 Strange_cat()의 메소드로도 사용할 수 있습니다.

 

즉, 위의 예제에서 print(CatC.kind)Strange_cat(My_cat)을 통해서 상속된 것이고, print(CatC.name)My_cat.__init__(self, name)을 통해서 상속된 것입니다.

반응형

댓글