[Python Basics for AI] Python Object Oriented Programming

ssu_hyun·2021년 11월 23일

"만들어 놓은 코드를 재사용하고 싶다!"

클래스와 객체
객체 지향 언어의 이해

OOP (Python Object Oriented Programming)

  • 객체 : 실생활에서 일종의 물건
    • 속성(Attribute)과 행동(Action)을 가짐
  • OOP는 이러한 객체 개념을 프로그램으로 표현
    • 속성 = 변수(variable)
    • 행동 = 함수(method)
  • 파이썬 = 객체 지향 프로그램 언어
  • 클래스(Class) : 설계도 ex. 붕어빵틀
  • 인스턴스(instance) : 실제 구현체 ex. 붕어빵

class 선언하기

  • object는 python3에서 자동 상속

    Python naming rule
    변수와 Class명 함수명은 짓는 방식이 존재한다.

    • snake_case
      • 띄어쓰기 부분에 "_" 추가
      • 뱀처럼 늘여쓰기
      • 파이썬 함수/변수명에 사용
    • CamelCase
      • 띄어쓰기 부분에 대문자
      • 낙타의 등 모양
      • 파이썬 Class명에 사용

Attribute 추가하기

  • parameter, self. 으로 attribute 추가 => 객체 생성시 init의 parameter 넘겨줘야 함
    • self.name : self에 소속된 name
    • self.name = name : self.name에 parameter로 넘어온 name을 할당해주는 것
# abc : 객체, SoccerPlayer : 클래스
abc = SoccerPlayer("son", "FW", 7)
  • Attribute는 클래스 선언 후에 바꿀 수 있지만 권장하지는 않는다.
# Attribute change
jinhyun.back_number = 20

파이썬에서 __ 의미

method 구현하기

objects(instance) 구현하기

  • self : 생성된 instance 자신
    • 클래스 코드 안 : self
    • 클래스 코드 밖 : 변수/객체명 (ex. jinhyun)

class 구현하기 in python

OOP 만들기 - 노트북

OOP characteristics

  • 객체 지향 언어는 실제 세상을 모델링하는 것

상속(Inheritance)

다형성(Polymorphism)

같은 이름을 쓰되 각각의 목적에 따라 약간의 내부 구현을 다르게 만드는 것

가시성(Visibility)

Example1.

[문제점]
append를 통해 마음대로 외부에서 접근이 가능해 product외에 다른 클래스들( ex. abc)도 inventory에 접근이 가능해진다.



[맨글링(함수명 변경)]
[items 접근 허용]

decorate

decorate를 이해하기 위해서는 다음의 3가지 개념들에 대한 이해가 필요하다.

First-class objects

Inner function

  • result=72result = 7^2
  • exponentresult=inner=wrapper=249exponent**result = inner = wrapper = 2^{49}

0개의 댓글