티스토리 뷰

반응형

파이썬(Python)에서 클래스(class)를 만들고 사용하는 법을 알아보겠습니다.


파이썬 클래스 특징 정리

클래스는 객체(인스턴스)를 생성하기 위해 필요하다.

(주로 붕어빵틀을 클래스, 붕어빵을 객체로 비유한다)

객체지향 프로그래밍(OOP)을 위해 사용된다.

객체지향 프로그래밍의 특징 - 추상화, 캡슐화(정보은닉), 상속, 다형성

프로그램의 유지보수를 편리하게 만든다.

파이썬의 모든 데이터는 객체이다. 함수 또한 객체다.

클래스에는 속성(멤버 변수), 메소드(멤버 함수), 생성자, 소멸자 등이 포함된다.


파이썬 클래스 만들기

class robot: # robot 클래스를 생성
  pass

파이썬에서는 class 키워드로 클래스를 생성한다.

pass는 아무것도 안하는 클래스, 함수를 만들 때 사용한다.


class robot:
  name = "robot"
  def info(self):
    print('나의 이름은', self.name, '입니다!')

파이썬 클래스 만들기

클래스 내에 속성메소드가 포함된다.

클래스에 정의되는 변수를 속성, 함수는 메소드라 부른다.

메소드의 첫 번째 인자로 self를 전달한다.

self는 하나의 클래스에서 만들 여러 객체(인스턴스)를 구별하기 위해 사용된다.

(다른 이름을 써도 되지만 관습적으로 self를 주로 사용한다.)

isinstance()를 사용하여 어느 클래스의 객체(인스턴스)인지 확인한다.


파이썬 생성자, 소멸자

class robot:
  name = "robot"
  age = 0
  def __init__(self, name, age):
    print('생성자 호출!')
    self.name = name
    self.age = age
  def __del__(self):
    print('소멸자 호출!')
  def info(self):
    print('나의 이름은', self.name, '입니다!')
    print('나이는', self.age, '입니다!')

파이썬 생성자, 소멸자

객체가 만들어질 때 호출되는 함수를 생성자(__init__)라고 한다.

생성자는 객체를 초기화 할 때 자주 사용된다.

객체가 사라질 때 호출되는 함수를 소멸자(__del__)라고 한다.


파이썬 클래스 상속

class robot:
  name = 'robot'
  age = 0
  def __init__(self, name, age):
    print('robot 생성자 호출!')
    self.name = name
    self.age = age
  def __del__(self):
    print('robot 소멸자 호출!')
  def info(self):
    print('나의 이름은', self.name, '입니다!')
    print('나이는', self.age, '입니다!')

class strong_robot(robot):
  weapon = 'gun'
  def __init__(self, name, age, weapon):
    print('strong_robot 생성자 호출!')
    super().__init__(name, age)
    self.weapon = weapon
  def info(self): #오버라이딩
    super().info()
    print(self.weapon, '로 싸웁니다!')

파이썬 클래스 상속

상속 받고 싶은 부모 클래스를 괄호 안에 입력한다.

상속을 받으면 부모 클래스의 모든 내용이 자식에게 전달된다. (코드 재사용)

자식 클래스에서 부모 클래스 메소드를 사용하기 위해 super()를 사용한다.

부모 클래스가 제공하는 메서드를 자식 클래스가 재정의 할 수 있다. (오버라이딩)

파이썬은 다중상속을 지원한다. (콤마로 구분하여 나열하면 된다.)


파이썬 get, set 메소드 함수 사용

class test:
    data = 10

파이썬은 기본적으로 직접 속성에 접근할 수 있다. (편하지만 위험)


class test:
    __data = 10
    def getData(self):
        return self.__data
    def setData(self, data):
        self.__data = data

파이썬 get, set 메소드 함수 사용

속성 이름 앞에 언더바를 2개(__) 쓰면 외부에서 속성(변수)에 접근할 수 없다.

get, set 메소드(함수)를 사용하여 속성을 다룬다.


파이썬 클래스 메소드 VS 인스턴스 메소드

class test:
    data = 10 # 클래스 속성
    def __init__(self, data): 
        self.data = data # 인스턴스 속성
    @classmethod
    def printClass(cls): # 클래스 메소드
        print(cls.data)
        
    def printInstance(self): # 인스턴스 메소드
        print(self.data)

파이썬 클래스 메소드 VS 인스턴스 메소드

메소드는 기본적으로 self를 전달하는 인스턴스 메소드이다.

@classmethod, @staticmethod를 사용하여 클래스 메소드를 만든다.

클래스 메소드는 클래스 이름으로 함수를 호출 할 수 있다. ex) test.printClass()

클래스 속성, 클래스 메소드는 모든 객체(인스턴스)가 공유한다.


파이썬에서 클래스와 관련된 내용을 정리해봤습니다. 다중상속이나 연산자 오버로딩과 같이 자주 사용되지 않는 내용은 생략했으니 필요할 때 구글링으로 찾아보시기 바랍니다.


반응형
댓글