1. class method 일반적으로 클래스 안에 정의된 함수는 self를 인자로 받는 인스턴스 함수(Instance Method) @classmethod 데커레이터가 함수에 정의되어 있다면 이는 클래스 함수(Class Method)로 클래스 전체에 영향을 줌 클래스 함수는 생성된 모든 객체에 영향을 줌 Python에서는 클래스 함수의 매개변수로 cls를 사용 다음 예제코드는 클래스 함수를 통해 해당 클래스로부터 생성된 객체의 수를 확인할 수 있음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # ex) class method class A(): count = 0 def __init__(self): A.
1. get/set 함수 Java, C++ 등 일부 언어에서는 클래스 멤버 변수에 직접 접근을 제어하는 private 속성을 지원 이러한 private 변수에 접근하기 위해 setter/getter 함수를 이용 하지만, Python에서는 모든 속성이 public Python에서 클래스 멤버 변수에 접근하는 것을 제한하는 방식 setter/getter 함수 property 멤버변수 앞에 __ 더블 언더스코어 추가(private naming convention) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 1.
1. 객체(object)와 클래스(class) Python에서는 모든 것이 객체 숫자, 문자, 문자열 등… 객체는 데이터(변수 또는 속성)와 코드(함수 또는 메소드)를 포함한다. 객체는 class에 의해 생성 1 2 3 4 5 6 7 8 9 10 11 class Person(): # 객체 초기화를 위한 __init__ 함수 def __init__(self, name): self.name = name if __name__ == "__main__": someone = Person("nick") print(someone.name) # 실행결과 # nick class는 객체를 만드는 틀, class를 통해 여러개의 객체를 생성 객체의 초기화를 위해 class 내부에 __init__함수 선언 __init__ 함수의 첫 번째 매개변수는 self, self는 특정 객체 자신을 의미 위의 예제코드 동작 순서 Person 클래스의 정의를 찾음 새로운 객체를 메모리에 생성 객체의 __init__ 함수를 호출, 새로 생성된 객체를 self에 전달하고, 다음으로 초기화 문자열 "nick"을 전달 self.
1. 예외처리 어떤 상황에서 실패할 수 있는 코드를 실행했을 때 잠재적인 에러를 방지하기 위해 예외처리가 필요하다. 파이썬에서는 try/except 구문 사용 에러가 예상되는 코드에 try문 사용, 에러 처리를 위해서는 except문 사용 1 2 3 4 5 6 7 8 >>> short_list = [1, 2, 3] >>> position = 5 >>> try: short_list[position] >>> except: print('Need a position between 0 and', len(short_list)-1, ' but got', position) Need a position between 0 and 2 but got 5 try 블록 안의 코드를 실행할 때 에러가 발생하며 예외가 발생한다.
1. 제너레이터(Generator) 제너레이터는 파이썬에서 어떤 시퀀스를 생성하는 객체를 의미한다. 특히, 제너레이터는 이터레이터(Iterator)의 소스롤 자주 활용된다. 대표적인 제너레이터로는 range() 함수가 있다. 제너레이터는 제너레이터 함수로 함수 형태로 쓰일 수도 있는데 이 때 일반 함수와 달리 return이 아닌 yield문으로 값을 반환하게 된다. yield문은 간단히 말해 제너레이터 객체로 반환을 한다는 의미이다. 다음은 제너레이터의 예시 코드이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # yield문을 통해 제너레이터 함수를 작성한 예시코드 >>> def my_range(first=0, last=10, step=1): number = first while number < last: yield number number += step >>> my_range <function my_range at 0x10d80be18> # my_range()함수를 호출한 결과, 제너레이터 객체가 반환된 것을 확인할 수 있다.