클래스
는 객체
를 표현하기 위한 문법이다.class 클래스이름: def 메서드(self): 코드
인스턴스
라고 한다.인스턴스 = 클래스이름()
속성(attribute)
은 데이터
라고 생각하면 메서드(method)
는 기능
이라고 생각하면 된다.인스턴스.메서드()
__init__
메서드는 인스턴스를 만들 때 호출되는 특별한 메서드. 즉, __init__(initialize)
이라는 이름 그대로 인스턴스(객체)를 초기화한다.class 클래스이름: def __init__(self): self.속성 = 값
class 클래스이름: def __init__(self, 매개변수1, 매개변수2): self.속성1 = 매개변수1 self.속성2 = 매개변수2
비공개 속성(private attribute)
이 있는데 이는, 클래스 안의 메서드
에서만 접근할 수 있다는 뜻이다.class 클래스이름: def __init__(self, 매개변수) self.__속성 = 값
클래스에 바로 속성을 만드는 방법
도 있는데 이 경우, 클래스로 다른 인스턴스들을 만들고 각각의 속성을 만들어줘도 속성은 공유한다는 특징이 있다.class 클래스이름: 속성 = 값
비공개 클래스 속성
은 비공개 인스턴스 속성과 같은 특징을 가진다.class 클래스이름: __속성 = 값 # 비공개 클래스 속성
정적 메서드
와 클래스 메서드
가 있다.정적 메서드
는 메서드 위에 @staticmethod
를 붙입니다. 이때 정적 메서드는 매개변수에 self를 지정하지 않는다.class 클래스이름: @staticmethod def 메서드(매개변수1, 매개변수2): 코드 클래스이름.메서드( # 클래스에서 바로 메서드 호출
클래스 메서드
는 메서드 위에 @classmethod를 붙인다. 이때 클래스 메서드는 첫 번째 매개변수에 cls를 지정해야 한다.class 클래스이름: @classmethod def 메서드(cls, 매개변수1, 매개변수2): 코드
클래스 상속(inheritance)
은 같은 클래스를 기반으로 여러 변형이 필요한 상황에서 생성하며, 새로운 기능을 추가하여 만든다. 이는 기반 클래스와 연관되면서 동등한 기능일때 사용한다.class 기반클래스이름: 코드 class 파생클래스이름(기반클래스이름): 코드
메서드를 새로 정의
하는 메서드 오버라이딩
클래스 상속
에서 어떤 기능이 같은 메서드 이름으로 계속 사용되어야 할 때 메서드 오버라이딩을 활용한다.class Person: def greeting(self): print('Hello') // class Student(Person): def greeting(self): print('Hello super star!') // james = Student() # Hello james.greeting() # Hello super star!