1 minute read

클래스 정리

#클래스 #속성 #인스턴스 #메서드

간단한 비유

회사에서 신입사원을 뽑기 위해 서류를 받는다. 이름, 나이, 학교, 번호 등 정보들이 있다.

효율적으로 정보를 얻기위해서는 자기소개서 양식을 정하여 작성하도록 해야한다.

자기소개서 양식 안에는 이름, 나이, 주소, 학교, 번호 등이 있다.

자기소개서 양식 => 클래스

이름, 나이, 학교, 번호 항목 => 클래스 속성

지원자 김준환, 홍길동, 이철수, 김영희 => 인스턴스

KDT과정 수료 여부를 판단하여 수료 하였을 경우 통과 => 메서드

class IntroDuce:
    title = 'Happy Coding'  # 클래스 변수 정의

	def __init__(self, name, age, school, number, kdt):  # 초기 실행
    	self.name = name
        self.age = age
        self.school = school
        self.number = number
        self.kdt = kdt
        
    def kdt(self):
        if kdt = True:
            print('합격입니다')
        else:
            print('보류')

junhwan = IntroDuce('김준환', 25, 'KNU', 01012345678, True)
print(junhwan.name) # '김준환'
junhwan.kdt()   # 합격입니다.
junhwan.name = '홍길동'
print(junhwan.name) # '홍길동'   => 변경 가능

클래스 속성

  • 한 클래스의 모든 인스턴스가 같은 값을 가지고 있는 속성

메소드

  • 클래스 메소드

    • 클래스가 사용할 메소드
    • @classmethod 데코레이터를 사용하여 정의
    • 호출 시, 첫 번째 인자로 클래스(cls)가 전달됨
    class MyClass:
          
        @classmethod
        def class_method(cls, arg1, ):
    
  • 스태틱 메소드

    • 인스턴스 변수, 클래스 변수를 전혀 다루지 않는 메소드
    • 속성을 다루지 않고 단지 기능만을 하는 메소드를 정의할 때 사용
    • @staticmethod데코레이터를 사용하여 정의
    • 호출 시, 어떠한 인자도 전달되지 않음
    class MyClass:
          
        @staticmethod
        def class_method(arg1, ):
    

상속

  • 하위 클래스는 상위 클래스에 정의된 속성, 행동, 관계 및 제약 조건을 모두 상속 받음
  • 부모 클래스의 속성, 메소드가 자식 클래스에 상속되므로, 코드 재사용성이 높아짐
class ChildClass(ParentClass):
    pass
  • 상속 관련 함수와 메소드

    • super()

      자식 클래스에서 부모 클래스를 사용하고 싶은 경우

    class IntroDuce:
        title = 'Happy Coding'  # 클래스 변수 정의
      
    	def __init__(self, name, age, school, number, kdt):  # 초기 실행
        	self.name = name
            self.age = age
            self.school = school
            self.number = number
            self.kdt = kdt
              
    class Team:
        def __init__(self, name, age, school, number, kdt, team_name):
            super().__init__(name, age, school, number, kdt)
            self.team_name = team_name
    

Updated: