상세 컨텐츠

본문 제목

Class와 method 활용 (2) - Class 설계하기

개발/python-심화(Advanced)

by Matthew0633 2022. 4. 1. 23:54

본문

Class 와 객체

처음 프로그래밍을 했을 때, 무언가 컴퓨터 세상에만 존재하는 개념인 것 같아 헷갈려서 쉽게 이해되지 않았던 것이 바로 클래스와 객체의 개념이다.. 이 글을 보는 분들은 그러지 않기를 바라며 현실적으로 비유해서 말해보자면, 내가 "차량" 이라는 Class 를 미리 정의했다면, 해당 Class를 활용하여 실제 존재하는 우리 아버지의 차를 객체로 정의할 수 있다. Class 정의를 통해서 추상화​가 가능한데, Class를 활용한 추상화란 해당 Class에 해당할 수 있는 모든 실체가 있는 존재가 가진 특성 (= 속성, attribute) 과 기능 (method) 을 정의하는 것이다. 이를 통해, 해당 Class에 속하고, 실체가 있는 존재에 대하여, "객체"를 효율적으로 정의할 수 있다. 

Class 설계를 통한 객체 생성 예시 (python)

  • 아래 코드에서는 _company_details 이라는 특성을 가지고, 있는 Car 라는 Class 를 정의하고, 실제 존재하는 차량 3대를 해당 Class를 활용하여 객체로 정의한 코드이다.
    class Car():
    		"""
        Car Class
        Author : Kim
        Date : 2019.11.08
        """
    
        # 클래스 변수
        car_count = 0
    
        def __init__(self, company, details):
            self._company = company
            self._details = details
            Car.car_count += 1
    
        def detail_info(self):
            print('Current Id : {}'.format(id(self)))
            print('Car Detail Info : {} {}'.format(self._company, self._details.get('price')))
    
    car1 = Car('Ferrari', {'color' : 'White', 'horsepower': 400, 'price': 8000})
    car2 = Car('Bmw', {'color' : 'Black', 'horsepower': 270, 'price': 5000})
    car3 = Car('Audi', {'color' : 'Silver', 'horsepower': 300, 'price': 6000})

객체 정의 시 메모리 작동 방식

  • 동일한 class 기반 객체는, 서로 다른 메모리 주소에 할당된다 그러나 객체의 class 는 동일한 메모리 주소에 있는 Car를 가리키고 있다
    print(id(car1)) # 2929503735040
    print(id(car2)) # 2929503735328
    print(car1 is car2) # False
    print(car1.__class__ is car3.__class__) # True

<Reference>
우리를 위한 프로그래밍 : 파이썬 중급 (인프런)

관련글 더보기

댓글 영역