일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보안뉴스요약
- 자바스크립트 node
- numpy
- python
- 자바스크립트 element api
- 카카오프로젝트 100
- 깃허브
- 자바스크립트 객체
- 다크웹
- ES6
- php
- 자바스크립트 API
- Oracle SQL
- 보안뉴스 요약
- 보안뉴스 한줄요약
- 랜섬웨어
- javascript
- 자바스크립트 jQuery
- oracle db
- 카카오프로젝트100
- 카카오프로젝트
- 자바스크립트 prototype
- 파이썬
- oracle
- 보안뉴스
- 오라클
- 자바스크립트 기본 문법
- 자바스크립트
- 보안뉴스한줄요약
- GIT
- Today
- Total
FU11M00N
[Python] 파이썬 클래스와 메소드 ,객체,변수 본문
- 객체지향프로그램(Object-Oriented Program, OOP)
• OOP는 설계도에 해당하는 클래스(Class)와 실제 구현체인 인스턴스 (Instance)로 나눔
주체 | 의미 |
Class | 동일한 목적을 달성하기 위해 저장공간과 기능을 하나로 묶은 것(Encapsulation) |
class Object | 클래스와 동일한 의미로 사용하는데 특정 클래스를 구체적으로 지 정하기 위해 사용 |
Object(Instance) | 클래스를 자료형으로 해서 생성된 객체 |
Method | 클래스 안에 정의된 함수 |
Member & Static variable | 클래스 안에 정의된 변수 |
Attribute(속성) | 클래스 안에 있는 모든 것 |
Inheritance(상속) | 하위 클래스가 상위 클래스의 모든 속성을 물려받는 것 |
Super Class(Base Class) | 다른 클래스의 상위 클래스 |
Sub Class(Derived Class) | 다른 클래스로부터 속성을 물려받는 클래스 |
Multiple Inheritance(다중상속) | 2개 이상의 클래스로부터 상속받는 것 |
Polymorphism(다형성) | 동일한 코드가 상황에 따라 다르게 반응하는 것 |
- 클래스와 객체
– 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계도면
– 1개의 클래스는 무수히 많은 객체를 만들 수 있다.
>>> a = Bread()
>>> b = Bread()
• Object
– 클래스에 의해 만들어진 피조물
– 객체별로 독립적인 성격을 갖는다
– 동일한 클래스에 의해 생성된 객체들은 서로에게 전혀 영향을 주
지 않는다.
객체(Object) = 속성(Attribute) + 기능(Method)
• 클래스를 자료형으로 해서 메모리 할당을 한 데이터
1. 파이썬에서는 클래스도 하나의 객체
2. 속성 : 사물의 특징
num = 123 # 자료형 : int, 변수: num
my_car = Car() # 자료형 : Car 클래스, 객체 : my_car
객체 대신 인스턴스(Instance)라는 용어를 사용하기도 함.
• 클래스가 설계도, 객체는 그 설계를 바탕으로 실체화한 것이라는 뜻에서 유래
한 용어
• 객체뿐 아니라 변수도 인스턴스라고 부름.
• 자료형을 메모리에 실체화한 것이 변수이기 때문임.
클래스는 다음과 같이 class 키워드를 이용하여 정의.
class 클래스명:
코드블록
클래스의 코드블록은 변수와 메소드(Method)로 이루어짐.
• 메소드(Method)
- 객체 지향 프로그래밍의 기능에 대응하는 파이썬 용어
- 함수와 거의 동일한 의미이지만 메소드는 클래스의 멤버라는 점이 다름
• 변수
- 클래스 변수 : 클래스 내부에 선언된 변수
- 인스턴스 변수 : self가 붙어 있는 변수
객체의 멤버(메소드와 데이터 속성에 접근하기)
• 객체의 멤버에 접근할 때는 점(.)을 이용.
my_car = Car()
print(my_car.color)
• 예) 자동차의 속성 : 바디의 색, 바퀴의 크기, 엔진의 배기량
기능 : 어떤 것의 특징적인 동작
• 예) 자동차의 기능 : 전진, 후진, 좌회전, 우회전
속성과 기능을 들어 자동차를 묘사하면?
• “16인치의 바퀴를 가진 2,000cc의 빨간 차는 전진, 후진, 좌회전, 우
회전의 기능이 있다.”
다음과 같이 묘사한 자동차를 코드로 표현
• “16인치의 바퀴를 가진 2,000cc의 빨간 차는 전진, 후진, 좌회전, 우회전의 기 능이 있다
color = 0xFF0000 # 바디의 색
wheel_size = 16 # 바퀴의 크기
displacement = 2000 # 엔진 배기량
def forward(): # 전진
pass
def backward(): # 후진
pass
def turn_left(): # 좌회전
pass
def turn_right(): # 우회전
pass
- 다음과 같이 묘사한 자동차를 클래스 코드로 표현.
• “16인치의 바퀴를 가진 2,000cc의 빨간 차는 전진, 후진, 좌회전, 우회전의 기능이 있다.”
class Car:
def __init__(self):
self.color = 0xFF0000 # 바디의 색
self.wheel_size = 16 # 바퀴의 크기
self.displacement = 2000 # 엔진 배기량
def forward(self): # 전진
pass
def backward(self): # 후진
pass
def turn_left(self): # 좌회전
pass
def turn_right(self): # 우회전
pass
- 메소드
- 메소드 생성
메소드를 클래스 내부에 선언할 때는 첫번째 매개변수는 무조건 현재
- 클래스의 객체 가 되어야 함
관습적으로 self 라는 단어를 이용
두번째 매개변수부터는 사용자가 정의할 수 있음
예) def add(self, num):
- 메소드를 호출하는 방법
1. 클래스 이름을 이용한 호출(언바운드 호출)
클래스이름.메소드이름(인스턴스이름, 매개변수)
2. 인스턴스 이름을 이용한 호출(바운드 호출)
인스턴스이름.메소드이름(매개변수)
3. 클래스 내부에서 자신의 클래스에 속한 메소드를 호출
self.메소드이름(매개변수)
class Student:
def start(self):
print("안녕하세요")
def printName(self,name):
print("이름은 {0} 입니다. ".format(name))
stu = Student()
Student.start(stu) #<----- unbound 호출: 클래스명.메소드
stu.printName("김찰스") # <---- bound 호출 : 인스턴스.메소드
- 변수
클래스 내의 변수 생성
• 메소드 외부에서 선언하면 클래스 변수
- 클래스 내부에 1개만 만들어지며 클래스 이름으로 접근할 수 있고 객체 이름으로
도 접근해서 사용할 수 있게 됩니다.
- 클래스 변수는 클래스 이름을 이용해서 수정하면 클래스 변수가 수정되지만 객체
이름으로 수정하면 객체 각각의 데이터가 만들어집니다.
• 메소드 내부에서 self와 함께 선언되면 인스턴스 변수
- 각 객체 내부에 각각 만들어지며 객체 이름으로만 접근해서 사용할 수 있음
- 메소드 내부에서 self.과 함께 변수를 선언하지 않으면 그 변수는 메소드의 지역변
수가 됨
'Programming > Python' 카테고리의 다른 글
[Python] 정적 메소드 (0) | 2020.11.17 |
---|---|
[Python] 파이썬 생성자와 소멸자 (0) | 2020.11.10 |
[Python] 웹 크롤링으로 내 블로그 제목만 출력하기 (0) | 2020.11.06 |
[Python] write() byte, str 타입 에러 (0) | 2020.10.17 |
[python] 리눅스 에서 파이썬 여러버전 사용하기(업그레이드 or 다운그레이드)Alternatives 활용 (0) | 2020.10.14 |