class, object
class는 사전에 정의된 특별한 데이터와 메서드의 집합이다. 클래스에 선언된 모양 그대로 생성된 실체를 object(객체)라고 한다. 객체가 소프트웨어에 실체화될 때(메모리에 할당되어 사용될 때), 이 실체를 instance라고 한다. 객체는 인스턴스를 포함할 수 있으며, 포괄적인 의미를 지닌다.
파이썬에서 가장 간단한 형태의 클래스
class ClassName(object):
# sentence 1
# ...
# sentence n
pass
>>> x = ClassName() # 클래스 정의에 따라 인스턴스 생성
>>> x
<__main__.ClassName object at 0x106a90940>
class instantiation - 클래스 인스턴스 생성
클래스 인스턴스 생성은 함수 표기법을 사용하여 초기 상태의 객체를 생성하는 일이다. 인스턴스 생성 작업은 어떤 특징을 가진 빈 객체를 만드는 것이다. (여러 범위의) 여러 이름을 같은 객체에 binding(or aliasing) 할 수 있다.
Hello라는 클래스가 있다고 하자. 그러면 Hello()를 호출하여 객체를 생성하는데, 이때 Hello()를 constructor(생성자)라고 한다. 생성자를 호출하면 Hello.__new__()
메서드가 호출되어 객체가 할당되고, 그다음 Hello.__init__()
이 객체를 초기화한다
attribute - 속성
객체에는 data와 method로 이루어지는 클래스 속성(attribute)이 있다. 메서드 속성은 함수인데, 그 첫 번째 인수는 호출된 인스턴스 자인이다(파이썬에서는 이를 _self_라고 한다).
속성은 점.
뒤에 나오는 모든 이름이다. 모듈 내 모든 이름의 참조는 속성 참조다. 모듈명.함수명과 같은 표현식에서 모듈명은 모듈 객체이고, 함수명은 객체의 속성 중 하나이다. 속성은 읽기 전용일 수도 있고 쓰기 가능할 수도 있다. 쓰기 가능한 속성은 del문으로 삭제할 수 있다.
namespace
네임스페이스는 이름을 객체로 mapping하는 것이다. 대부분 네임스페이스는 파이썬 dictionaly로 구현되어 있다. 네임스페이스의 예로는 내장된 이름 셋, 모듈의 전역 이름, 함수의 지역 이름 등이 있다. 스크립트 파일이나 대화식 인터프리터의 최상위 호출에 의해 실행되는 명령문은 __main__
이라는 모듈의 일부로 간주되어, 고유의 전역 네임스페이스를 갖는다.
scope
스코프는 네임스페이스에 직접 접근할 수 있는 파이썬 프로그램의 텍스트 영역(textual region)이다. 스코프는 정적으로 결정되지만, 동적으로 사용된다. 즉 스코프는 텍스트에 따라 결정된다. 즉 한 무듈에 정의된 함수의 전역 스코프는 해당 모듈의 네임스페이스다. 클래스 정의가 실행되면, 새로운 네임스페이스가 만들어지고, 지역 스코프로 사용된다.
'Programming > Python' 카테고리의 다른 글
datetime, str, timestamp 변환 (0) | 2021.01.13 |
---|---|
NamedTuple 초기화 이후 수정하는 방법 (0) | 2020.12.11 |
exception - 예외처리 (0) | 2020.10.13 |
Serialization, pickling - 직렬화 (0) | 2020.10.07 |
lambda - 람다 (0) | 2020.10.06 |
댓글