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
글 참조
'네이버 부스트캠프 학습 정리 > 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 |