Summarization
- 객체(Object)는 속성과 기능으로 구분되며, 코드 재사용 및 모듈화에 좋다.
- 클래스(Class) class 키워드와 속성(변수), 기능(함수)를 이용해서 만든다.
- 변수는 객체의 메모리 주소를 저장하고 이를 통해 객체를 참조한다.
- 얕은 변수는 객체 주소를 복사하는 것으로, 객체 자체가 복사되지 않는다. 객체 자체를 복사하는 것은 깊은 복사라고 한다.
Contents
- 객체지향 프로그래밍은 객체(Object)를 이용한 프로그램으로, 객체는 속성과 기능으로 구성된다.
- 객체 사용의 장점
- 클래스(Class)
클래스(Class)는 class 키워드와 속성(변수), 기능(함수)를 이용해서 만든다.
class Car:
def __init__(self, col, len):
self.color = col
self.length = len
def doStop(self):
print('Stop!')
def doStart(self):
print('Go!')
def printCarinfo(self):
print(f'Self.color : {self.color}')
print(f'Self.legnth : {self.length}')
car1 = Car('red', 200)
car2 = Car('blue', 300)
car1.printCarinfo()
car2.printCarinfo()
class Calculator:
def __init__(self):
self.num1 = 0
self.num2 = 0
self.result = 0
def add(self):
self.result = self.num1 + self.num2
return self.result
Calculator().add()
- 메모리(Memory)
- 변수는 객체의 메모리 주소를 저장하고 이를 통해 객체를 참조한다.
- 주소를 참조하기 때문에 참조변수(Reference Variable)라고도 함
- 변수를 할당하는 경우, 새로운 메모리에 저장이 아닌, 기존 메모리에 저장된 주소를 넣어주는 것.
- 따라서, 처음 할당된 메모리의 값(Value)를 변경하면, 변수를 할당한 메모리 내용도 함께 변경된다.
class Robot:
def __init__(self, color, height, weight):
self.color = color
self.height = height
self.weight = weight
def printRobotInfo(self):
print(f'color: {self.color}')
print(f'height: {self.height}')
print(f'weight: {self.weight}')
rb1 = Robot('red', 200, 80)
rb2 = Robot('blue', 300, 120)
rb3 = rb1
rb1.printRobotInfo()
rb3.printRobotInfo()
rb1.color = 'gray'
rb1.printRobotInfo()
rb3.printRobotInfo()
- 복사(Copy)
- 얕은 복사 : 객체 주소를 복사하는 것
- 객체 자체가 복사되지 않는다.(i.e.주소만 복사 > 각 객체가 가르키는 주소가 서로 같다.)
- 깊은 복사 : 객체 자체를 복사하는 것 > 또 하나의 객체를 생성한다.