ROKO

[Python] OOP (Object Oriented Programming) 본문

Computer Science/Programming Language

[Python] OOP (Object Oriented Programming)

RO_KO 2023. 3. 2. 22:16
728x90

Python은 OOP를 강제하지는 않지만 방향성을 제공하는 언어이다. 객체 지향 프로그래밍이란 절차지향과 같이 순차적으로 logic을 구성하는것이 아닌 객체들간의 관계로 logic을 구성하는 것을 의미한다.

 

객체는 class로 부터 생성된 변수로 속성과 함수를 가지고 있는 변수이다.

파이써의 모든 구성 요소는 객체로 정의되어 사용된다.

용어 정리

  • 객체(object) : 파이썬에서 추상화되어 표현되는 데이터
  • 변수(variable) : 객체를 관리하기 위한 메모리 영역 (Ex x  = 10, x 는 10이라는 literal을 의미하는 변수)
  • 식별자(identifier) : entity를 구별하기 위해 사용되는 이름 (식별자가 같은 경우 변수에 값이 재할당)
  • id,dientity : 객체 정보가 저장된 변수의 실제 주소값 id(var)로 알 수 있음
  • 함수(function) : 명령어 모음, 코드의 재사용
  • 메소드(method) : 객체 내장 함수
    • 함수 vs 메소드 : 함수는 독립적, 메소드는 독립적으로 호출이 불가하고 객체에 의존하여 호출
  • 클래스(class) : 사용자가 데이터과와 함수를 설정해 새로운 데이터 타입을 생성
  • 인스턴스(instance) : class에서 생성된 변수들로 객체와 비슷한 의미로 쓰임
  • attribute : 객체 안에 있는 변수나 메소드를 의미

dir(), help()

변수에 위 함수를 적용해 어떠한 메소드들이 있는지, 어떠한 특성이 있는지 알아내는것과 사용법에 대해 알 수 있다.

dir(1)
help(dir)
help(int)
...

Python data 특징

  • Python은 ASCII code를 기준으로 str을 해석한다.

  • bool type은 python int의 또다른 표현이다.
    • dir(True), dir(1)을 비교해보면 같은 속성과 메소드를 갖는것을 알 수 있다.
  • and 연산의 최적화
    • A and B에서 A가 틀린 경우 이미 전체 bool type이 결정나므로 B를 확인하지 않고 False객체를 생성하는 것이 아닌 기존의 A bool 결과를 반환한다. 이미 A가 False이기 때문에 결과적으로 같은 의미이기 때문이다.
    • 만약 A가 참인 경우 B를 확인한뒤 A,B 의 bool값을 비교하는것이 아닌 B의 bool값을 그대로 반환해준다. 이 또한 결과적으로 의미 차이가 없기 때문이다.
  • or 연산의 최적화
    • A or B에서 A가 참인 경우 A값 반환, A가 거짓인 경우 B결과값을 반환한다. 이유는 and 와 같다.
  • is vs ==
    • == 는 값이 같은지를 확인하고 is 는 두 객체의 주소값이 같은지 확인한다.
    • 따라서 1 == 1.0 은 True 이나 1 is 1.0 은 False이다.
  • 변수명 결정 주의사항
import keyword

print(keyword.kwlist)

import builtins

print(builtins)

문법적인 요소로 사용중인 keyword나 built-in functions 들과 겹치지 않도록 변수명을 설정해야 한다.

728x90
Comments