네이버 부스트캠프 학습 정리/1주차

[Python] OOP

AI쟁이J 2023. 3. 10. 20:42

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

너무도 유명하고 많이 들었던, 파이썬을 대표하는 성질.

클래스 = 붕어빵 틀, 객체 = 각종 붕어빵

자동차 예제 등등.. 너무도 많이 봤다. 그런거 말고 새로 안것들 정리

 

OOP를 통한 모델링에서 필요한 3가지

1. Inheritance(상속)

부모 클래스로부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것으로 

class a(object):

    def __init__(self, name):

        self.name = name

 

을 만들었을 때

class b(a): 

    pass

를 통해 a의 클래스 속성, method 전부를 물려받은 자식 클래스 b를 생성 가능하다.

 

2. Polymorphism(다형성)

같은 이름 메소드의 내부 로직을 다르게 작성하는 것

즉 같은 모양의 코드가 다른 동작을 하는 것.

ex) push(keyboard) 라는 키보드를 누른다는 동일한 코드에 대해

shift, enter, esc의 각 실제 키에 따른 동작이 다른 것

 

3. Visibility(가시성)

객체의 정보를 볼 수 있는 레벨을 조절하는 것으로 정보보안과 관련됨.

  • 공개(public)
    • 어디서든 객체에 점 연산자(.)를 사용하여 접근할 수 있음
  • 비공개(private)
    • 속성 이름 앞에 밑줄(__) 두 개를 붙여 지정
    • 같은 클래스에 속한 메서드에서는 비공개 필드에 직접 접근 가능
    • 하지만 클래스 외부에서 직접 비공개 필드에 접근하면 예외가 일어남
class MyObject(object):
    def __init__(self):
        self.public_field = "a"
        self.__private_field = "b"
    
    def get_private_field(self):
        return self.__private_field

foo = MyObject()

assert foo.public_field == "a"            
assert foo.get_private_field() == "b"
foo.public_field
# 'a'

public_field에 접근하는 경우 'a' 를 반환 가능

foo.__private_field

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_44400/2542819391.py in <module>
----> 1 foo.__private_field

AttributeError: 'MyObject' object has no attribute '__private_field'

private_field에 직접 접근하는 경우 Attribute error 예외 발생

 

decorator / 일등함수

일등함수

- 변수나 데이터 구조에 할당이 가능한 객체이며 파라메터로 전달이 가능하고 리턴 값으로 사용됨

def first(x):
    return x ** x

f = first
f(5)
# 3125

f = first를 통해 변수로 지정하고 f(5)를 실행하면 first(5) 와 같은 값인 5의 5제곱 출력

closure function

closure를 구성하는 요소

- 함수 중첩

- 일급 객체 (일등함수)

- nonlocal

 

함수 중첩

def print_msg(msg):
    def printer():
        print(msg)
    printer()

print_msg("hello")
# hello

함수 속에서 함수를 호출할 수 있는 것

자세한 내용은 너무 기므로 

https://shoark7.github.io/programming/python/closure-in-python

 

Python의 Closure에 대해 알아보자

Python에서 유용한 Closure에 대해 살펴봅니다.

shoark7.github.io

글 참조

 

 

 

 

'네이버 부스트캠프 학습 정리 > 1주차' 카테고리의 다른 글

1주차 회고  (1) 2023.03.12
[AI math] 벡터와 행렬  (0) 2023.03.11
[Python] arg/configparser  (0) 2023.03.11
[Python] Pythonic Code  (0) 2023.03.10
[Python] Function  (0) 2023.03.10