객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.
객체는 클래스에서 생성된다.
코드 재사용과 모듈화에 좋아, 가장 이상적인 프로그램이 될 수 있다.
클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
객체는 클래스의 생성자를 호출한다.
객체 속성은 변경할 수 있다.
변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.
- 얕은 복사
객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다.
예시 코드는 다음과 같다.
class TemCls: def __init__(self, n, s): self.number = n self.str = s def printClsInfo(self): print(f'self.number: {self.number}' print(f'self.str: {self.str}') tc1 = TemCls(10, 'hello') tc2 = tc1 tc1.printClsInfo() tc2.printClsInfo() tc1 = TemCls(2024, 'python') tc2 = tc1 tc1.printClsInfo() tc2.printClsInfo()
- 깊은 복사
객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다.
예시 코드는 다음과 같다
import copy class TemCls: def __init__(self, n, s): self.number = n self.str = s def printClsInfo(self): print(f'self.number: {self.number}' print(f'self.str: {self.str}') tc1 = TemCls(10, 'hello') tc2 = copy.copy(tc1) tc1.printClsInfo() tc2.printClsInfo() tc2.number = 3.14 tc2.str = 'Bye' tc1.printClsInfo() tc2.printClsInfo()
import copy
scores = [9, 8, 5, 7, 6, 10]
scoresCopy = []
scoresCopy = scores
print(f'id(scores): {id(scores)}')
print(f'id(scoresCopy): {id(scoresCopy)}')
# for문 사용하기
for s in scores;
scoresCopy.append(s)
print(f'id(scores): {id(scores)}')
print(f'id(scoresCopy): {id(scoresCopy)}')
# extend 사용하기
scoresCopy.extend(scores)
print(f'id(scores): {id(scores)}')
print(f'id(scoresCopy): {id(scoresCopy)}')
# copy() 사용하기
scoresCopy = scores.copy()
print(f'id(scores): {id(scores)}')
print(f'id(scoresCopy): {id(scoresCopy)}')
# list의 슬라이싱 사용하기
scoresCopy = scores[:]
print(f'id(scores): {id(scores)}')
print(f'id(scoresCopy): {id(scoresCopy)}')
* 이 글은 제로베이스 데이터 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.