일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 는 하지마...
- blkls
- network
- 윈도우 프로세스
- 생활코딩
- 디지털포렌식 with CTF
- Window process
- ZIP 파일구조
- pythonchallenge
- 24시간의 전사
- CTF-D
- disk
- vinetto
- Multimedia
- Multimeida
- 생활코딩 html
- ftz
- 실기
- html
- 윈도우 프로세스 종류
- N0Named
- 디지털포렌식
- 정보처리기사 필기 합격
- slack space
- 2022시작
- 네트워크관리사2급
- 슬퍼유
- 포렌식
- 네트워크 보안
- memory
- Today
- Total
ssoL2 TISTORY
[기초 PYTHON 프로그래밍] 20강. 클래스와 객체 본문
- 객체(object) : 파이썬에서 모든 데이터와 함수는 객체이다.
- 모든 데이터 및 함수의 type을 확인하면 <class '...'> 형태를 공유
- 클래스(class) : 객체(object)를 만들기 위한 도구이며, 현실 세계의 모든 물체들을 객체로 생성 가능
- 속성 : 객체를 구성하는 데이터
- 메소드 : 클래스 안에서 속성에 대해 어떤 기능을 수행하는 함수
- 생성자, 소멸자 : 객체 생성과 소멸 시에 자동 호출되는 특별한 메소드
- 연산자 중복 : 연산자(+,- 등) 기호를 이용하여 표현할 수 있도록 함
- 생성자는 def __init__(self,...) : 으로 정의 / 소멸자는 def __del__(self,...) : 으로 정의
- 강아지를 클래스를 이용하여 객체로 표현하기
- class 정의시 기본적으로 docstring을 통해 """ class 설명과 객체 속성 설명함 """
- 모든 메소드는 첫 번째 인수로 self가 들어가야 함
- 객체 생성 시 생성자 메소드 __init__ 이용하며 self 다음으로 속성으로 매개변수 잡음
- 알고리즘 순서
1. x = Dog('Jack', 3)
Dog 이라는 클래스에 인수로 'Jack'과 3을 담음
-> __init__ 메소드에 name : 'Jack', age=3인 객체가 생성됨
-> 이 객체는 x이며 이때 self가 x인거임
2. y = Dog('Daisy', 2)
Dog 이라는 클래스에 인수로 'Daisy'과 2을 담음
-> __init__ 메소드에 name : 'Daisy', age=2인 객체가 생성됨
-> 이 객체는 y이며 이때 self가 y인거임
3. x.bark()
x 라는 객체에 대해서 bark() 메소드를 호출
-> 객체 x에서 호출했으므로 self는 x이며 print하기 위해 self.name을 호출
-> print 함
-> Jack is barking
4. y.bark()
y라는 객체에 대해서 bark() 메소드를 호출
-> 객체 y에서 호출했으므로 self는 y이며 print하기 위해 self.name을 호출
-> print 함
-> Daisy is barking
5. print(x.name, 'is', x.age, 'years old.')
x라는 객체에 대해 name 속성과 age 속성 호출
-> print 함
-> Jack is 3 years old
6. print(y.name, 'is', y.age, 'years old.')
y라는 객체에 대해 name 속성과 age 속성 호출
-> print 함
-> Daisy is 2 years old
-원(circle)을 클래스를 이용하여 객체로 표현하기
- 기본적으로 클래스(속성) 형태이다 !!!!!!!!!! 인자가 클래스 객체 속성임
- 이것도 위의 순서와 비슷하다.
대충, circle 클래스에 인수로 속성 5가 와서 c1이라는 객체 생성 이후 객체 메소드 참조
- list 클래스
- 위의 Dog 클래스와 circle 클래스 처럼 사실은 리스트(list)도 클래스였다!!
- 그래서 리스트 생성 시 L1 = [1,3,5] 처럼 속성만 썼지만 L2 = list([2,4,6]) 처럼도 생성 가능
(list도 클래스이므로 클래스(속성) 형태이므로 이렇게 객체 생성)
- 그러나 리스트를 많이 이용하는 파이썬에서 생략 가능해도 객체 생성 되도록 만든 것
- 고로, list도 사실은 클래스이다.
- int 클래스
- 빨간색으로 되어있는 메소드는 비교 연산자 / 파란색으로 되어있는 메소드는 계산 연산자
- int 클래스에 있는 비교 연산자와 계산 연산자는 현재 간략히 표현되고 있음
- list 클래스의 객체 생성과 마찬가지로 int 클래스도 y = int(20) 처럼 객체 생성이 원리
but 파이썬 기술의 생략으로 간략히 y = 20 으로도 객체 생성이 가능 했던 것
- 이처럼 계산 연산자도 사실 메소드로 쓰는 것이 원리 ex) z = x.__add__(y)
but 주석 #z=x+y 처럼 파이썬 기술의 편리성으로 메소드 대신 + 연산자로 대체 가능
- 이는 equalize에서 스펠링을 가져온 __eq__ 메소드도 == 으로 대체 가능
- grater than에서 스펠링 가져온 __gt__ 메소드도 > 로 대체 가능
- 이런 방법으로 메소드가 편리하게 대체되고 있던 것이다. 이것이 원리다 !!
- 이렇게 연산자 메소드를 연산자와 중복해서 사용할 수 있다는 뜻에서 연산자 중복임
- 연산자 중복 예제 : 좌표 클래스 만들기
- 좌표를 만들어주는 Point 클래스
- 속성은 x좌표 y좌표 있으며 생성자 매개변수로 예전에 배운 기본값 인자 사용 중
- get 메소드는 좌표 모양을 나타내는 표시
- 좌표끼리 더하는 __add__ 메소드 즉, 연산자 중복으로 + 연산자 이용해서
(p3 = p1.__add__(p2) 대신에 p3 = p1+p2 사용)
두 좌표를 각각 x, y 좌표 더해서 Point(newX, newY)를 반환하므로써 새로운 객체 생성
- 클래스가 저장된 파일을 모듈로 사용 가능
'com > python' 카테고리의 다른 글
[이코테2021] 2강. 그리디 & 구현 (0) | 2020.12.26 |
---|---|
[기초 PYTHON 프로그래밍] 완강!! (0) | 2020.12.25 |
[기초 PYTHON 프로그래밍] 19강. 파일 입출력 (0) | 2020.12.25 |
[기초 PYTHON 프로그래밍] 18강. 예외 처리 (0) | 2020.12.25 |
[기초 PYTHON 프로그래밍] 17강. 실습3 (0) | 2020.12.25 |