fixed attributes

__slots__

기본적으로 파이썬의 클래스들은 내부 네임스페이스에 속성이름과 속성값을 저장하기 위해서 사전을 이용한다. 이 덕분에 런타임에서 새로운 속성을 추가하거나 속성을 삭제하는 것이 가능해진다. 대신에 꽤 적지 않은 메모리를 사용하게 된다. 만약 고정된 몇 개의 속성만을 갖는 작은 클래스의 인스턴스를 대량으로 만들어야 한다면 이러한 메모리 낭비가 심해지는데, 이를 해결하기 위해서 __slots__ 클래스 속성을 사용할 수 있다. 이렇게 생성한 클래스는 변경 가능한 이름공간을 가지지 않으므로 실행시간에 새로운 attribute를 추가할 수 없다.

class ImageInfo:
    __slots__ = ['id', 'name', 'href', 'alt']
    def __init__(self):
        self.id = None
        self.name = None
        self.href = None
        self.alt = None