
954
5
부
메타프로그래밍
나며,
23
장에서 자세히 설명한다. 프로퍼티 자체도 사실은 디스크립터 클래스로 구현된다. 그
렇지만 여기서는 프로퍼티 팩토리를 함수로 구현함으로써 프로퍼티 사용법을 계속 알아본다.
그러나 프로퍼티 팩토리를 구현하기 전에, 프로퍼티를 좀 더 심도 있게 이해해야 한다.
22
.
5
프로퍼티 제대로 알아보기
내장된
property( )
는 비록 데커레이터로 사용되는 경우가 많지만, 사실상 클래스다. 파이썬
에서 함수와 클래스는 서로 교환할 수 있을 때가 많다. 함수와 클래스는 모두 콜러블이고 객체
를 생성하기 위한
new
연산자가 없으므로, 생성자를 호출하는 것은 팩토리 함수를 호출하는 것
과 차이가 없다. 그리고 데커레이트된 함수를 적절히 대체할 수 있는 콜러블을 생성한다면 둘
다 데커레이터로 사용할 수 있다.
property( )
생성자의 전체 시그너처는 다음과 같다.
property(fget=None, fset=None, fdel=None, doc=None)
모든 인수는 선택적이며, 인수에 함수를 제공하지 않으면 생성된 프로퍼티 객체가 해당 연산을
지원하지 않는다.
property
형은 파이썬
2
.
2
에 추가되었지만,
@
기호를 사용한 데커레이터 구문은 파이썬
2
.
4
에서 등장했다. 따라서 수년간 접근자 함수를 앞의 두 인수로 전달함으로써 프로퍼티를 ...