기타/What I Learned

[TIL] 속성

가죽방패 2022. 1. 6. 17:38

※ 인스턴스 속성

- 클래스에는 존재하지 않지만 객체에는 존재하는 것들이 있는데 이게 바로 인스턴스 속성(instance attribute)이다.

생성된 인스턴스의 이름공간은 다른 인스턴스에 대해 독립적이라는 것을 이해했을 것이다. 같은 사람이더라도 키나 몸무게가 사람마다 각자 수치가 다르듯이 객체도 자신만의 속성값을 갖는다.

 

○ 클래스 속성

- 클래스 속성(class attribute)을 설명하기 위해 한 가지 예시를 들어보자면 땅을 사서 집을 짓고 도시를 건설하는 게임이 있다고 생각했을때 회사가 짓는 집을 위해 House 클래스를 정의하고 이 클래스를 토대로 다양한 집을 짓도록 설계했다.

지어진 집에는 회사의 이름 "행복주택" 을 어딘가에 새긴다고 할때 모든 집에는 "행복주택" 이라는 문구가 있을 것 이다.

 

지금은 작동해야 하는 양이 적고 복잡성이 낮기 때문에 별 문제가 없지만 건축물이 많아져 "Since 2022" 를 문구에 추가하려고 한다면 최소 1000개의 객체에 수정이 들어가야 하므로 약간의 부하가 걸릴 것이다. 게다가 이 게임은 플레이 도중 사명을 바꿀 수 있기 때문에 플레이어가 사명을 바꿀경우 큰 사단이 일어나고 말 것이다.

 

그래서 이를 해결하고자 익숙치 않은 객체지향적인 설계를 버려두고 전역변수를 사용하기로 했다.

클래스를 수정하고 전역변수인 "Company" 도 추가되었다. 수정 가능한 몇 가지 방법이 있는데 첫 번째로는 직접 Company 변수를 직접 수정해주는 일이고 두번째 방법으로는 global 키워드를 사용해 메소드에서도 전역변수를 참조해 수정할 수 있다.