파이썬
15.클래스
미스터 한뺑
2022. 8. 3. 21:31
반응형
< 클래스 >
- 변수와 함수를 묶어놓은 개념
- 클래스는 객체(데이터와 기능을 갖고있는...)를 만들기 위한 설계도
- 클래스를 메모리에 객체화 하면 그걸 인스턴스()라 한다.
클래스의 구조
- 변수: 인스턴스 변수(객체화되면 사용가능한 변수), 클래스 변수(클래스 정의시 에도 사용가능한 변수)가 있다.
- 함수: 메소드(객체의 소속되어있는 함수)
- 'init 메소드: 생성자
- 객체의 초기화를 담당, 객체의 변수의 값을 초기 설정
- 객체화가 되었을때 생성하야하거나 초기값을 세팅해야하는 인스턴스 변수들이 있다면 "init"메소드 안에 선언하면 된다.
- self
- 클래스가 객채화 되었을때 자기 자신의 주소를 받는 파라미터
- 클래서가 인스턴스화 되면 메모리상에서 어디에 있는지 self 파라미터의 주소값을 참조해서 객체의 변수의 접근한다.
- 클래스를 정의할때 메소드에 무조건 첫번째 파라미터로 정의해줘야한다.
- 클래스가 객체화 되었을때 메스도 사용시 아규먼트로 넣어주지 않아도 자동으로 들어간다.
***이것만 외우기***
- 클래스를 정의할때 __init__를 무조건 정의하자
- 객체화 되었을때 사용할 변수들을 이안에 정의
- 클래스 안에 메소드들을 정의 할때 무조건 self를 쓰자
- 클래스가 객체화되서 해당 객체의 메소드를 실행할때 "self"는 자동으로 파이썬이 넣어주니 신경쓰지 말자

# 상속
- 구현된 클래스의 기능(메소드)을 그대로 가져다가 사용하거나 아니면 그 기능을 수정하거나 추가할때 사용
- 부모클래스의 속성(인스턴스변수와 메소드)들울 자식클래스가 그대로 물려받는 개념
- 확장 개념, 부모클래서와 자식클래서가 합쳐지는 개념
- 쉽게 말해서 부모한테 자산을 자식이 물려받는 것.
사진을 보면 위에 있는 class가 부모 class 아래가 자식class이다
그래서 상속을 하면 자식 class가 부모 class 지역함수를 물려 받는 것!
그래서 자식 클래스()에 부모 클래스를 넣어주고
초기값을 위해 __init__함수 생성.
그 밑에 super().__init__()을 써줌으로서 상속!
그리고 부모클래스에 없는 걸 추가로 넣을 수 있다.
< 오버라이딩 >
- 부모로부터 받는 메소드를 수정하고 싶을때 자식클래스에서 재정의 한다
위 사진을 보면 이미 자식 클래스에서 부모로부터 상속을 받은 상태이다 . 그러나 부모 클래스에서 수정할게 생긴 상태
간단하게 자식 클래스에서 수정할 수있다 .
엎어 쓰기 처럼 변경할 함수 또는 값을 같은 구조로 변경만 하면 된다 .
부모 클래스 defend 값은 방어하기로 지정되어있는데 자식 클래스 defend는 마법사가 방어하기 로 변경되어있다.
답은 위 사진 처럼 출력이 된다.
< 매직 메소드 >
- 메소드 명이 두개의 언더바로 감싸져 있다.
- 파이썬의 다양한 내장함수들이 클래스의 매직 매소드들을 호출하여 결과를 만들어 낸다.
__call__ :프린트 함수를 쓰면 출력되는 매소드
__str__: 리턴 값을 반환해주는 매소드
__len__: 길이는 반환해주는 매소드
__getitem__: 인덱스를 반환해주는 매소드
.
.
.
.
.
많은 매소드가 있다 .
dataset이라는 클래스에
매직매소드를 지정을 했다 .
data가 있고 __len__, __getitem__ 매소드를 구하라는 식
len(dt)
Output:
7
dt[0]
Output:
(0.4, 0)
출력은 이렇게 나와야한다.
반응형