일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 리눅스
- putty
- 코딩테스트
- linux
- HTML
- 파이썬 알고리즘
- 파이썬 데이터프레임
- Algorithm
- VirtualBox
- it용어
- tibero
- Python 라이브러리
- 파이썬
- Python DataFrame
- it 용어
- RFP
- 파이썬 전처리
- 리눅스 명령어
- PYTHON
- Oracle
- sql
- Oracle VM VirtualBox
- 데이터베이스
- 알고리즘
- python algorithm
- dbeaver
- MariaDB
- csharp
- 오라클
- C#
- Today
- Total
오경석의 개발노트
IT 용어_덕 타이핑(duck typing) 본문
덕 타이핑(duck typing)은 동적 타이핑의 한 종류로, 객체의 변수 및 메소드의 집합이 객체의 타입을 결정하는 것을 말한다. 클래스 상속이나 인터페이스 구현으로 타입을 구분하는 대신, 덕 타이핑은 객체가 어떤 타입에 걸맞은 변수와 메소드를 지니면 객체를 해당 타입에 속하는 것으로 간주한다."덕 타이핑"이라는 용어는 다음과 같이 표현될 수 있는 덕 테스트에서 유래됐다.
만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다.
덕 타이핑에서는, 객체의 타입보다 객체가 사용되는 양상이 더 중요하다. 예를 들면, 덕 타이핑이 없는 프로그래밍 언어로는 오리 타입의 객체를 인자로 받아 객체의 '걷기' 메소드와 '꽥꽥거리기' 메소드를 차례로 호출하는 함수를 만들 수 있다.
반면에, 같은 함수를 덕 타이핑이 지원되는 언어에서는 인자로 받는 객체의 타입을 검사하지 않도록 만들 수 있다. '걷기' 메소드나 '꽥꽥거리기' 메소드를 호출 할 시점에서 객체에 두 메소드가 없다면 런타임 에러가 발생하고, 두 메소드가 제대로 구현되어 있다면 함수는 정상적으로 작동한다. 여기에는 인자로 받은 객체가 '걷기' 메소드와 '꽥꽥거리기' 메소드를 갖고 있다면 객체를 '오리' 타입으로 간주하겠다는 암시가 깔려있다. 바로 이 점이 앞에서 인용한 덕 테스트의 사상과 일치하기 때문에 덕 타이핑이라는 이름이 붙었다.
장점
- 덕 타이핑은 더 적은 코드와 복잡한 상속 구조가 덜 필요하다. 따로 인터페이스를 지정할 필요가 없고, 사용할 메서드를 작성하면 되기 때문이다.
단점
- 간결함이 의도치 않은 동작을 만들 때가 있다. 해당 메소드에 대해서 잘 알지 못한다면 코드가 망가질 수 있기 때문에 다른 사람과 협업에서 주의가 필요하다.
참고자료 : https://ko.wikipedia.org/wiki/%EB%8D%95_%ED%83%80%EC%9D%B4%ED%95%91
덕 타이핑 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍 분야에서 덕 타이핑(duck typing)은 동적 타이핑의 한 종류로, 객체의 변수 및 메소드의 집합이 객체의 타입을 결정하는 것을 말한다. 클래스
ko.wikipedia.org
참고자료 : https://kimchunsick.me/2021-04-08-duck-typing/
덕 타이핑(Duck Typing)이란?
오리처럼 걷고, 오리처럼 꽥꽥거리면, 그것은 틀림없이 오리다. 위키피디아 - 덕 테스트 덕 타이핑이란, 덕 테스트에서 영향을 받은 동적 타이핑의 한 종류다. 객체의 메소드 존재 여부 등으로
kimchunsick.me
'기타 > IT 용어' 카테고리의 다른 글
IT 용어_로컬 서버, 개발 서버, 운영 서버 (1) | 2022.11.05 |
---|---|
IT 용어_객체 지향 프로그래밍 (1) | 2022.11.01 |
IT용어_백업(back-up) (1) | 2022.10.04 |
IT 용어_SSH(Secure Shell) (0) | 2022.08.26 |
모듈(Module) (0) | 2022.08.17 |