본문 바로가기
Programming Language/Python

[파이썬] DAY5 클래스

by 9루트 2022. 1. 20.

클래스: 객체 만들려고 존재한다.

 

객체의 아이덴티티는 동적 할당된 이름이 없는 변수이므로 주소로 구분한다.

이름은 두 개 인데 객체는 하나인 경우를 설명한다.

 

클래스 : 붕어빵 틀

객체 : 붕어빵

필드 : 붕어빵 속 앙금

 

객체는 이름이 없다.

 

 

리스트, 딕셔너리의 기본 호출법은 즉 클래스를 호출하여 list 객체를 만드는 과정이다.

<class 'int'> : int라는 클래스로 만든 객체임을 의미한다.

 

 

1. 클래스로 인스턴스 생성하기

 

 

 

객체를 아직 찍어내지 않았는데도 데이터가 나온다.

클래스 필드는 클래스가 선언될 때 만들어진다.

 

용어 정리

cls: 클래스를 지칭하는 약어로 해당 클래스를 지칭한다.

self: 자기 자신, A라는 클래스로 만들어진 인스턴스를 지칭한다.

 

 

 

인스턴스 메소드: 인스턴스 안에 있다.

인스턴스가 없으면 A.f()는 실행되지 않는다.

 

인스턴스가 생성되어도 접근할 수 없으면 쓸 수 없다.

클래스A에서 인스턴스 c에 접근할 방법이 없다.&amp;amp;amp;nbsp;

올바른 호출


 

2. 객체와 인스턴스의 차이

객체는 인스턴스를 포함하는 개념이다.

인스턴스화 : 클래스를 통해 인스턴스를 생성하는 것

인스턴스는 특정 객체(cat)가 어떤 클래스(Animal)의 객체인지를 관계 위주로 설명할 때 사용한다.

즉, cat은 객체이고 cat은 Animal의 인스턴스이다.

 

익명구현 객체: 이름과 주소 없고 한 번만 쓰는 객체

익명 구현 객체를 제외하고 인스턴스라는 표현을 쓴다.

 

클래스 필드는 모든 인스턴스들에게 공유된다.

 

 

A.a&amp;amp;amp;nbsp; a.a 입력했을 때 구분

 

 

반드시 인스턴스의 필드는 인스턴스의 메소드 안에서 입력해야한다. 

인스턴스 메소드나 인스턴스 안의 변수에 값을 넣으므로써 인스턴스의 필드를 생성할 수 있다.

 

자기 참조 포인트 : 메소드가 호출하게되면 b.x가 존재하게 된다. 인스턴스 메소드를 호출해야지만 필드가 생성된다.

 


3. 생성자(초기화)

 

생성자: 메모리에 객체를 만들어주는 것.

 

def__init__(self):

 

흑흑 1시간 동안 저장 안 했더니 다 지워졌다.... ㅇ. .ㅇ ㅇ.ㅏ  ㅏㅓㅏ ㅓㅏ 다시 써본다.

 

생성자를 프로그래머가 코드로 넣지 않아도 자동적으로 a 인스턴스가 만들어진다.

 

생성자에 디폴트 메소드를 매개변수로 넣으면 

인스턴스를 만들 때 값을 넣지 않아도 두 개 모두 인스턴스가 생성된다.

따라서 여기까지 배워본 클래스 필드와 인스턴트 필드를 만드려면 다음과 같이 하면 된다.

 

* 메소드의 5가지 종류

1) 입력: X, 출력: X

2) 입력: 1개, 출력: X

3) 입력: X, 출력: 1개

4) 입력: 2개, 출력: X

5) 입력: 1개, 출력: 1개

 

 

 

클래스메소드에서 클래스 필드로 접근할 때

다음과 같이 @Classmethod를 쓰고 cls 를 사용하여 코드를 작성하면 된다.

 

 

 

 

쌤 코드 추가!!

 

 

 

핵심

인스턴스는 다 접근할 수 있다.

클래스는 인스턴스에 접근할 수 없고 클래스에만 접근할 수 있다.