데이터 위클리 페이퍼 1 - 클래스와 인스턴스, 정적 메소드
- 데이터 위클리 페이퍼 12 - 머신러닝 편향과 분산, K-폴드
- 데이터 위클리 페이퍼 11 - 지도학습과 비지도학습, 손실 함수
- 데이터 위클리 페이퍼 10 - A/B테스트, Event Taxonomy
- 데이터 위클리 페이퍼 9 - AARRR 사례 분석
- 데이터 위클리 페이퍼 8 - AARRR, 코호트와 세그먼트, RFM
- 데이터 위클리 페이퍼 7 - 장바구니 분석(연관분석)
- 데이터 위클리 페이퍼 6 - 클러스터링, 고유값과 고유벡터, 히스토그램
- 데이터 위클리 페이퍼 5 - 사분위수, 기술통계와 추론통계
- 데이터 위클리 페이퍼 4 - 데이터 전처리와 t-test
- 데이터 위클리 페이퍼 3 - 제1종 오류와 제2종 오류, p-value
- 데이터 위클리 페이퍼 2 - 유닉스 절대경로와 상대경로, 깃 브랜치
클래스와 인스턴스에 대해 설명해주세요
- 클래스
- 변수와 함수를 묶어 놓은 것
- 어떤 객체를 만들기 위한 설계도
- 객체의 속성(데이터)과 메소드(동작)을 정의함
- 속성 : 클래스안의 변수
- 메서드 : 클래스안의 함수
- 예시1) 자동차 클래스
- 속성 : 디자인, 엔진, 속력 등
- 메서드 : 속도 증감, 방향 전환, 시동on/off기능 등
- 예시2) 집 클래스
- 속성 : 방의 개수, 창문, 문 등
- 메서드 : 입주상태, 집의 가격변동, 방의 개수 변동 등
- 객체
- 클래스가 설계도라면, 객체는 설계도를 바탕으로 만들어진 물건
- 클래스에 정의된 속성(데이터)과 메소드(동작)을 가짐
- 프로그램 내에서 사용되는 구체적인 속성과 동작을 가진 실체
- 예시) 자동차 클래스
- 객체1 : 가속력이 뛰어난 빨강 모터스포츠용 자동차
- 객체2 : 안정성이 높은 하얀 도로주행용 자동차
- 인스턴스
- 특정 클래스의 구조를 가지는 객체
- 객체가 특정 클래스의 구조와 행동을 따를 때,
객체 A는 클래스 B의 인스턴스
라고 표현 - 객체와 인스턴스는 거의 동일한 의미로 사용됨
- 객체는 프로그램 내에서 사용되는 구체적인 속성과 동작을 가진 것
- 인스턴스는 특정 클래스의 구조를 가지는 객체
- 클래스의 구조를 가진 객체를 실체화 한 것
- 실체화된 인스턴스는 메모리에 할당됨
[인스턴스와 객체의 표현]
- 인스턴스는
어떤 객체가 어떤 클래스에서 생성되었는지
표현할 때 사용- 클래스와 객체의 관계를 설명하는
~로 만든
으로 이해하면 좀 더 와닿는다.
- 객체A는 클래스B의 인스턴스이다. → 객체A는 클래스B로 만든 객체다.
- 여담으로 구글링을 해본 결과, 객체와 인스턴스 구분없이 혼용해서 사용하는 것으로 보임
- 초기 번역과정에서 명확하게 정리되지 않은것으로 추정됨.
정적 메소드는 무엇이고, 어떻게 호출하나요?
- 정적 메소드(static method)
- 객체의 유무와 상관없이 독립적으로 호출이 가능한 메소드
- 인스턴스 메소드 : 객체가 있어야만 호출 가능. 데코레이터 없이 메소드를 선언
- 정적 메소드 : 객체가 없어도 호출 가능. 데코레이터를 사용하여 메소드를 선언
- 객체의 유무와 상관없이 독립적으로 호출이 가능한 메소드
- 정적 메소드 정의와 호출
- 클래스안에
@staticmethod
데코레이터를 사용하여 정의 - 정적 메소드는 클래스 이름을 통해 직접 호출할 수 있으며, 첫 번째 매개변수로
self
를 받지 않음
- 클래스안에
- 정적 메소드의 특징
- 객체의 유무와 상관없이 접근이 가능함
- 첫 번째 매개변수
self
를 받지 않아 클래스의 인스턴스의 접근하는 작업을 수행할 수 없다 → 객체에 접근할 필요가 없는 기능을 구현할 때 사용 - 클래스 이름을 통해 직접 호출하여 인스턴스를 생성할 필요가 없다
- 객체의 상태와 상관없이 동작하는 유틸리티 함수에 사용
- 정적 메소드와 클래스 메소드 비교
- 정적 메소드(
@staticmethod
) : 첫 번째 매개변수로 클래스나 객체를 받지 않으며, 클래스와 인스턴스에 접근하지 않는 독립적인 메소드 - 클래스 메소드(
@classmethod
) : 첫 번째 매개변수로 클래스를 받으며, 클래스를 통해 호출될 때 클래스의 상태에 접근할 수 있음
- 정적 메소드(
This post is licensed under CC BY 4.0 by the author.