일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 독일기온
- 메타버스투자
- qqq
- 메타버스
- 메타버스기업
- 메타버스etf
- 클래스속성
- 로봇주식
- 인스턴스
- 주식유튜버
- 클래스접근
- silvester
- 넷플릭스etf
- UpperCaseCamelCasing
- 독일명절
- 주식
- TQQQ
- uml다이어그램
- 파이썬
- 메타버스예시
- 지수추종etf
- 인공지능etf
- 절차지향프로그래밍
- 해외주식
- 미국주식etf
- robo etf
- 독일겨울날씨
- 미국주식
- 모튼틸덤
- 웅덩이매매법
- Today
- Total
DAON's studio
파이썬(python) - 클래스(class), 오브젝트(object) 쉽게 이해하기 본문
우선 클래스에 대해 이해하기 전에 객체지향 프로그래밍(object-oriented programming)의 개념에 대해서 이해해야 한다.
이 개념은 1960년대에 절차 지향 프로그래밍(procedure-oriented programming)이 갖지 못한 점을 절충하는 방안으로 고안되었다.
절차 지향 프로그래밍은 명령어들을 순서대로 실행하며, 함수와 데이터를 관련지어 관리할 수 없다는 점에서 복잡한 작업에 비효율적인 부분이 있다.
객체지향 프로그래밍에서는 '클래스' 라는 개념을 사용하여 클래스 안에 관련된 함수와 데이터(예; 변수)들을 묶어서 정의할 수 있으며,
클래스라는 틀로 객체들을 찍어낼 수 있고, 각각의 객체들은 자신의 역할이 있어서 요구되는 기능을 수행하게 된다.
한 마디로 '클래스' 라는 한가지의 틀을 만들어 놓은 후 필요에 따라 그것을 사용, 변형시켜 다양한 객체를 찍어낼 수 있다고 보면 된다.
클래스 오브젝트 인스턴스
쉽게 비유하자면
클래스(class)는 붕어빵을 만드는 틀이며
오브젝트(object)는 붕어빵, 붕어빵 안에 팥을 넣을지 슈크림을 넣을지에 따라 비슷하지만 다양한 객체가 생성될 수 있음.
인스턴스(instance)는 클래스가 구체화되어 메모리에 할당되고, 소프트웨어 상에 실체화, 구체화 되는 것을 말한다.
오브젝트와 인스턴스의 차이를 조금 자세히 설명하자면
a = Age() 라는 코드에서 a 는 어떤 클래스의 객체라고 설명될 수도 있고, Age()의 인스턴스라고 설명될 수도 있는 것이다.
클래스 안에는 속성/변수(attribute)과 함수(클래스 내의 함수를 method 라고 함)가 있다.
속성은 클래스 고유의 속성을 보여주는 데이터인데, 통상적으로 method를 뺀 나머지 변수들을 뜻한다.
다음은 클래스를 선언하는 간단한 코드의 예시이다.
나이를 현재 나이에서 몇년 전/후의 나이를 계산해주는 간단한 클래스를 만들어봤다.
여기서 클래스의 이름은 'Age' 이다.
클래스 'Age' 안에는 age_type 이라는 attribute(속성)/변수가 있다.
이 클래스에는 __init__ , next_year, previous_year, how_old 이렇게 네 개의 method 가 있다.
클래스를 정의하는 방법을 알았다면 이 클래스가 어떻게 UML 다이어그램으로 나타내질 수 있는지도 알아야 한다.
또 반대로 UML 다이어그램을 보고 클래스를 선언하는 코드를 쓸 줄도 알아야 한다.
위의 코드를 UML 다이어그램으로 나타내면 다음과 같다.
다음 포스팅에서는 클래스의 사용과 주의할 점에 대해 자세히 알아보도록 하겠다.