인프런 - 파이썬입문과 크롤링기초 부트캠프: 섹션 2 - 객체와 클래스

르네·2023년 9월 26일
0

Python

목록 보기
15/45

인프런 강의 <파이썬입문과 크롤링기초 부트캠프>을 듣고, 중요한 점을 정리한 글입니다.

객체지향 프로그래밍(Object Oriented Programming)

절차지향과 객체지향 프로그래밍

  • 절차지향 프로그래밍
    - 1990년대 이전 언어는 대부분 절차지향 프로그래밍
    - 대표적인 언어: 파스칼, 코볼, 포트란, C언어등

예: 냉장고에 코끼리2를 넣는다.

  1. 코끼리라는 사물의 기능, 정보에 대한 설계도를 만든다.
  2. 이 설계도를 기반으로 코끼리1 객체를 만듭니다.
  3. 냉장고라는 사물의 기능, 정보에 대한 설계도를 만든다.
  4. 이 설계도를 기반으로 냉장고1 객체를 만듭니다.
  5. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 연다.
  6. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체안으로 들어간다.
  7. 냉장고1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 닫는다.

즉,
1. 해당 사물을 나타낼 수 있는 설계도를 만든다. (class)
2. 해당 사물의 설계도를 기반으로 사물1 객체를 만든다. (object)
3. 사물1 객체의 기능을 호출한다.

  • attribute: 사물1 객체의 변수
  • method: 사물1 객체의 함수

Q: 사물1 객체의 attribute나 method 호출방법은?
-> '사물1객체의이름.method이름(인자)'

string = "Fun Coding" # 문자열 관련 설계도 있음 - 해당 설계도 기반 문자열1 객체가 만들어짐
string.split() # 해당 문자열1 객체가 가지고 있는 메서드(method)

그럼 파이썬은 어떤 언어?

객체지향 프로그래밍 언어: JAVA, C++
파이썬: 객체지향(내부), 객체지향 문법(지원)


예제로 이해하는 객체지향 문법 (class와 object)

사각형 만들기

3.1. class 선언하기
: 객체 생성 전에 미리 class를 선언해야 함

1. 클래스를 어떻게 만드니?

class 클래스이름:
    attribute 선언
    method 선언

1.1 attribute 선언

  • 파이썬에서 attribute 는 attribute 값과 함께 선언이 일반적임
    - 예: attribute1 = 0
  • 생성자 메서드 init 의 인자를 활용해서 선언하는 방식이 보다 일반적임
    - 예: init 의 인자 중 하나가 width 일 경우
    - init 메서드 안에서 self.attribute1 = width 로 attribute1 선언

1.2 method 선언
class 안에서 def 메서드(self, ...) 와 같은 방식으로 선언

class Quad():
    width = 0
    height = 0
    color = ''
    name = 'Quad'
    
    def quard_name(self):
        return self.name
  • 클래스에 선언된 attribute를 해당 메서드에서 호출할 때는,
    'self.해당 attribute 이름'
    cf) 그러나, 해당 메서드를 호출할 때는 인자가 없기 때문에 그냥 괄호만 해줘도 된다. ex. quad1.quard_name()

  • 클래스 이름은 맨 앞은 대문자로 시작, 메서드 이름은 함수와 마찬가지로 소문자로 시작. 단어 여러개면 '_'로 띄어쓴다.

4X3(red), 5X5(blue), 7X4(brown) 세 개 객체를 만들고, 각각의 넓이 출력

quad1 = Quad()	#클래스로 객체 생성
quad1.height = 4 
quad1.width = 3
quad1.color = 'red'
quad1.get_area()

※ class에 있는 attribute 변수는 메서드에서 사용할 때, 'self.'을 붙여야 함. 그러나 메서드에서 인자로 받는 변수를 코드 안에서 쓸 때는 self 안 붙이고 해당 인자 이름을 그대로 써도 된다.

profile
데이터분석 공부로그

0개의 댓글