더북(TheBook)

예를 들어 robot_total_count 클래스 속성에 접근하려면 다음과 같이 사용합니다.

Robot.robot_total_count ------ 올바른 사용법
robot1.robot_total_count ------ 잘못된 사용법
robot2.robot_total_count ------ 잘못된 사용법

코드를 보면 Robot 클래스의 인스턴스가 생길 때마다 이 클래스 속성 값이 1씩 증가하도록 했습니다. 클래스 차원에서 robot_total_count 값을 보관하기 때문에 객체가 계속 생성되더라도 값을 유지하는 것을 알 수 있습니다.

robot 객체 첫째로봇(가) 만들어집니다.
현재까지 생성된 로봇의 수: 1
robot 객체 둘째로봇(가) 만들어집니다.
현재까지 생성된 로봇의 수: 2

이 값을 인스턴스 속성으로 두었다면 객체가 생성될 때마다 새로운 값으로 할당되어 서로 다른 객체에서 공유되지 못할 것입니다. 다음 코드는 robot_total_count를 인스턴스 속성으로 생성하면 객체끼리 변수 공유가 불가능하다는 것을 보여 주는 예제입니다.

> class Robot:
>     def __init__(self, name):
>         self.robot_total_count = 0
>         print("robot 객체 {}(가) 만들어집니다.".format(name))
>         self.name = name
>         self.robot_total_count = self.robot_total_count + 1
>         print("현재까지 생성된 로봇의 수: {}".format(self.robot_total_count))
>
>     def print_name(self):
>         print("제 이름은 {}입니다.".format(self.name))
> robot1 = Robot("첫째로봇")
> robot2 = Robot("둘째로봇")
robot 객체 첫째로봇(가) 만들어집니다.
현재까지 생성된 로봇의 수: 1
robot 객체 둘째로봇(가) 만들어집니다.
현재까지 생성된 로봇의 수: 1
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.