본문 바로가기
Programming/Python

[Python] Class 정리

by skyrun 2022. 10. 14.

- 명명은 대문자로 시작

- Class 에는 Attribute, Method가 있음

- self 는 객체, 클래스를 받는 자신을 뜻함

- Method의 첫번째 매개변수는 반드시 self여야 함

# def 메서드(self):

- Instance = Object(객체). 클래스의 인스턴스. 그냥 있으면 객체

- int, list, dict 등도 다 class 임. 변수를 해당 class로 지정해 준 거였음. 대문자로 시작 안 함.

- __ 가 붙은 메서드는 파이썬이 자동으로 호출해주는 메서드임. Special Method, Magic Method로 불리기도 함

- 인스턴스 속성은 __init__ 메서드에서 만듬

- class 안에서 속성, 메서드를 사용할 때는 self.속성, self.메서드로 호출함

# 속성 이름은 def 안에서 self.속성명으로 지정. 매개변수이름은 별개

- class의 위치 인수, 키워드 인수

- 함수를 생성한 뒤에 속성 추가도 가능. 하지만 속성을 추가한 인스턴스에만 속성이 추가됨

- __init__ 메서드가 아닌 다른 메서드에 속성을 추가할 경우 해당 메서드를 호출해야 해당 속성이 생성 됨

- 비공개 속성과 비공개 메서드 (Public <-> Private)

# 생성 시 앞에 __ 두줄을 붙인다.

# class 내부에서만 사용 가능 하다.

- class 속성은 class에 바로 속성을 만듬

# 클래스 속성은 클래스에 속해 있으며 모든 인스턴스에서 공유함

# 아래에서 jane.bag, james.bag를 찾을 수 있는 이유는 다음과 같다. 속성이나 메서드 이름을 찾을 때 해당 인스턴스에서 먼저 찾고, 없으면 클래스에서 찾기 때문이다.

- 클래스에서도 독스트링 사용 가능하다. 일반적으로 ''' ''' 를 사용 한다.

- 정적메서드

# 클래스에서 바로 호출 가능

# @(데코레이터)staticmethod 아래에 작성

# self를 받지 않으므로 인스턴스 속성에는 접근할 수 없음. 그래서 보통 인스턴스 속성, 인스턴스 메서드가 필요 없을 때 사용

# 정적메서드는 메서드의 실행이 외부 상태에 영향을 끼치지 않는 순수 함수(pure function)을 만들 때 사용. 순수함수는 입력값이 같으면 언제나 출력 값이 같음

- 클래스 메서드

# @classmethod 아래에 작성

# 메서드의 첫번째 매개변수로 cls 사용

# 클래스 메서드는 메서드 안에서 클래스 속성, 클래스 메서드에 접근해야할 때 사용함

# 클래스 메서드 안에서 현재 클래스의 인스턴스 생성 가능

- class 상속

# 물려받은 기능을 유지한 채로 다른 기능을 추가할 때 사용.

# Base Class(Parent Class, Superclass)의 기능을 물려받아 Derived Class(Child Class, Subclass) 생성

# Derived Class "is a" Base Class 관계가 성립될 때 사용

# super()로 Parent Class __init__ 실행해주기(초기화 하기)

# 자기 속성에서 hello를 먼저 찾고 부모의 __init__이 실행되었으면 부모에서 찾는다.

# super()은 한 단계 위만 호출함으로 여러 단계면 다 해야 함

# 만약 자식 클래스에서 __init__을 실행하지 않았다면 부모 클래스의 __init__이 자동으로 실행 되므로 생략 가능

# 파생 클래스에서 기반 클스의 메서드를 overriding 하면 바뀐다.

# super() 로 부모 메서드를 호출할 수 있다

- 여러 부모 클래스를 상속 받을 수 도 있다.

# class 파생클래스이름(기반클래스1, 기반클래스2):

- object 클래스

# 파이썬에서 object는 모든 클래스의 조상이다. 모든 클래스는 object 클래스를 상속 받으므로, 기본적으로 object를 생략한다.

# 추상 클래스는 추상클래스를 부모로 두는 자식클래스가 꼭 구현해야하는 메서드 이름을 저장한다.

'Programming > Python' 카테고리의 다른 글

[Python] Module  (0) 2022.10.19
[Python] 파이썬 문자열 합치기  (0) 2022.10.17
[Python] 변수의 상용 범위(Global)  (0) 2022.10.14
[Python] Dictionary 정리  (0) 2022.10.14
[Python] 함수 정리  (0) 2022.10.14

댓글