간단한 객체 정의

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 주식 정보를 나타내는 간단한 Python 클래스를 정의하는 방법을 배우게 됩니다. 클래스는 객체 지향 프로그래밍의 핵심 개념으로, 실제 세계의 엔티티를 모델링하고 코드를 보다 효율적으로 구조화할 수 있게 해줍니다.

이 랩의 목표는 간단한 Python 클래스를 정의하고, 클래스 속성 (attribute) 과 메서드 (method) 를 이해하며, 클래스 인스턴스 (instance) 를 생성하고 상호 작용하며, 객체 정보를 표시하기 위해 서식을 적용하는 것을 포함합니다. 이 랩 동안 stock.py 파일이 생성될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 97%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Python 클래스 이해하기

Python 에서 클래스는 객체를 생성하기 위한 청사진 역할을 합니다. 객체 지향 프로그래밍은 코드를 효과적으로 구성할 수 있게 해주는 강력한 접근 방식입니다. 이는 관련 데이터와 함수를 함께 그룹화하여 수행합니다. 이러한 방식으로 복잡한 프로그램을 더 쉽게 관리하고 코드를 더 모듈화하고 유지 관리할 수 있습니다.

Python 클래스는 두 가지 주요 구성 요소로 구성됩니다.

  • 속성 (Attributes): 클래스 내에서 데이터를 저장하는 변수입니다. 속성을 객체의 특성 또는 속성으로 생각하십시오. 예를 들어, 사람을 나타내는 클래스를 생성하는 경우 속성은 사람의 이름, 나이 및 키가 될 수 있습니다.
  • 메서드 (Methods): 클래스에 속하며 해당 속성에 액세스하거나 수정할 수 있는 함수입니다. 메서드는 객체가 수행할 수 있는 작업을 정의합니다. 사람 클래스 예제를 사용하면 메서드는 사람의 나이를 개월 수로 계산하는 함수가 될 수 있습니다.

클래스는 재사용 가능한 코드를 생성하고 실제 세계의 개념을 모델링하는 방법을 제공하므로 매우 유용합니다. 이 랩에서는 Stock 클래스를 생성합니다. 이 클래스는 주식 이름, 주식 수 및 주당 가격과 같은 주식 정보를 나타내는 데 사용됩니다.

다음은 Python 클래스의 기본 구조입니다.

class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

    def method_name(self):
        ## Code that uses the attributes
        return result

__init__ 메서드는 Python 클래스의 특수한 메서드입니다. 클래스에서 새 객체를 생성할 때 자동으로 호출됩니다. 이 메서드는 객체의 속성을 초기화하는 데 사용됩니다. self 매개변수는 클래스의 인스턴스에 대한 참조입니다. 클래스 내에서 속성 및 메서드에 액세스하는 데 사용됩니다. 객체에서 메서드를 호출하면 Python 은 자동으로 객체 자체를 첫 번째 인수로 전달합니다. 이것이 메서드 정의에서 self를 사용하는 이유입니다. 이를 통해 특정 인스턴스의 속성으로 작업하고 해당 속성에 대한 작업을 수행할 수 있습니다.

Stock 클래스 생성하기

Python 에서 클래스는 객체를 생성하기 위한 청사진입니다. 이를 통해 데이터와 기능을 함께 묶을 수 있습니다. 이제 주식 정보를 나타내기 위해 Stock 클래스를 만들어 보겠습니다. 주식에는 이름, 주식 수 및 주당 가격과 같은 특정 특성이 있습니다. 클래스 내에서 이러한 측면에 대한 속성을 정의합니다.

  1. 먼저 WebIDE 에서 올바른 디렉토리에 있어야 합니다. /home/labex/project 디렉토리에 아직 없는 경우 해당 디렉토리로 이동합니다. 여기에서 Stock 클래스 코드를 작업할 것입니다.

  2. 올바른 디렉토리에 있으면 편집기에서 새 파일을 만듭니다. 이 파일의 이름을 stock.py로 지정합니다. 이 파일에는 Stock 클래스에 대한 코드가 포함됩니다.

  3. 이제 Stock 클래스를 정의하는 코드를 추가해 보겠습니다. 다음 코드를 복사하여 stock.py 파일에 붙여넣습니다.

class Stock:
    def __init__(self, name, shares, price):
        self.name = name
        self.shares = shares
        self.price = price

    def cost(self):
        return self.shares * self.price

이 코드에서:

  • class Stock: 문은 Stock이라는 새 클래스를 만듭니다. 이것은 주식 객체를 생성하기 위한 템플릿과 같습니다.
  • __init__ 메서드는 Python 클래스의 특수한 메서드입니다. 생성자라고 합니다. Stock 클래스의 새 객체를 만들면 __init__ 메서드가 자동으로 실행됩니다. name, sharesprice의 세 가지 매개변수를 사용합니다. 이러한 매개변수는 주식에 대한 정보를 나타냅니다.
  • __init__ 메서드 내에서 self를 사용하여 클래스의 인스턴스를 참조합니다. 매개변수 값을 인스턴스 속성으로 저장합니다. 예를 들어, self.name = namename 매개변수를 객체의 속성으로 저장합니다.
  • cost() 메서드는 우리가 정의한 사용자 지정 메서드입니다. 주식 수 (self.shares) 에 주당 가격 (self.price) 을 곱하여 주식의 총 비용을 계산합니다.
  1. 코드를 추가한 후 파일을 저장합니다. Ctrl+S를 누르거나 저장 아이콘을 클릭하여 이 작업을 수행할 수 있습니다. 파일을 저장하면 변경 사항이 유지됩니다.

코드를 다시 검토하여 이해했는지 확인해 보겠습니다.

  • Stock이라는 클래스를 정의했습니다. 이 클래스는 주식 객체를 만드는 데 사용됩니다.
  • __init__ 메서드는 name, sharesprice의 세 가지 매개변수를 사용합니다. 이러한 값으로 객체의 속성을 초기화합니다.
  • __init__ 내에서 self를 사용하여 이러한 매개변수를 인스턴스 속성으로 저장합니다. 이를 통해 각 객체는 이러한 속성에 대한 자체 값 집합을 가질 수 있습니다.
  • 주식 수에 가격을 곱하여 총 비용을 계산하는 cost() 메서드를 추가했습니다. 이것은 주식 객체에 유용한 기능입니다.

Stock 객체를 만들면 __init__ 메서드가 자동으로 실행되어 제공된 값으로 객체의 초기 상태를 설정합니다. 이러한 방식으로 서로 다른 이름, 주식 수 및 가격으로 여러 주식 객체를 쉽게 만들 수 있습니다.

Stock 객체 생성하기

이제 Stock 클래스를 정의했으므로 이를 실행할 차례입니다. 클래스의 인스턴스를 생성하는 것은 일반적인 청사진을 기반으로 특정 예제를 만드는 것과 같습니다. 이 경우 Stock 클래스는 우리의 청사진이며, 몇 가지 주식 객체를 생성할 것입니다. 이러한 객체를 생성한 후에는 해당 속성 (특성) 및 메서드 (수행할 수 있는 작업) 에 액세스하는 방법을 배우게 됩니다.

  1. 먼저 WebIDE 에서 터미널을 열어야 합니다. 터미널은 컴퓨터에 지침을 제공할 수 있는 명령 센터와 같습니다. 터미널을 열려면 메뉴에서 "Terminal"을 클릭합니다.

  2. 터미널이 열리면 올바른 프로젝트 디렉토리에 있는지 확인해야 합니다. 프로젝트 디렉토리는 프로젝트와 관련된 모든 파일이 저장되는 곳입니다. 아직 프로젝트 디렉토리에 있지 않은 경우 다음 명령을 사용하여 해당 디렉토리로 이동합니다.

cd /home/labex/project
  1. 이제 stock.py 파일을 사용하여 대화형 모드에서 Python 을 시작하려고 합니다. 대화형 모드를 사용하면 코드를 단계별로 테스트하고 결과를 즉시 확인할 수 있습니다. stock.py 파일에는 Stock 클래스의 정의가 포함되어 있습니다. 다음 명령을 사용합니다.
python3 -i stock.py

여기서 -i 플래그가 중요합니다. 이는 Python 에 먼저 stock.py 스크립트를 실행하도록 지시합니다. 스크립트를 실행한 후 대화형 세션을 시작합니다. 이 세션에서는 stock.py 스크립트에서 정의된 모든 클래스 및 변수에 액세스할 수 있습니다.

  1. Google 주식에 대한 새 Stock 객체를 만들어 보겠습니다. 객체를 생성하는 것은 특정 값을 사용하여 Stock 클래스의 특정 인스턴스를 만드는 것과 같습니다. 다음 코드를 사용합니다.
s = Stock('GOOG', 100, 490.10)

이 코드 줄은 Stock 클래스의 새 인스턴스를 만듭니다. 각 값의 의미는 다음과 같습니다.

  • Name: 'GOOG' - 이것은 Google 주식의 기호입니다.
  • Shares: 100 - 이는 우리가 보유한 Google 주식 수를 나타냅니다.
  • Price: 490.10 - 이것은 Google 주식의 주당 가격입니다.
  1. 이제 Stock 객체가 있으므로 해당 속성에 액세스할 수 있습니다. 속성은 객체의 속성과 같습니다. 속성에 액세스하려면 객체의 이름 뒤에 점과 속성 이름을 사용합니다.
s.name

이 코드를 실행하면 주식의 이름이 출력됩니다.

'GOOG'

주식 수를 액세스해 보겠습니다.

s.shares

출력은 우리가 정의한 주식 수가 됩니다.

100

마지막으로 주당 가격에 액세스해 보겠습니다.

s.price

출력은 주당 가격이 됩니다.

490.1
  1. Stock 클래스에는 cost()라는 메서드가 있습니다. 메서드는 객체가 수행할 수 있는 작업과 같습니다. 이 경우 cost() 메서드는 주식의 총 비용을 계산합니다. 이 메서드를 호출하려면 다음 코드를 사용합니다.
s.cost()

출력은 총 비용이 됩니다.

49010.0

cost() 메서드는 주식 수 (100) 에 주당 가격 (490.10) 을 곱하여 작동하며, 이는 49010.0 을 제공합니다.

여러 Stock 객체로 작업하기

객체 지향 프로그래밍에서 클래스는 청사진과 같으며, 해당 클래스의 인스턴스는 해당 청사진을 기반으로 생성된 실제 객체입니다. 우리의 Stock 클래스는 주식을 나타내기 위한 청사진입니다. 이 Stock 클래스의 여러 인스턴스를 생성하여 서로 다른 주식을 나타낼 수 있습니다. 각 인스턴스에는 주식 이름, 주식 수 및 주당 가격과 같은 자체 속성 집합이 있습니다.

  1. Python 대화형 세션이 계속 실행 중인 상태에서 다른 Stock 객체를 생성할 것입니다. 이번에는 IBM 을 나타냅니다. Stock 클래스의 인스턴스를 생성하려면 클래스 이름을 함수처럼 호출하고 필요한 인수를 전달합니다. 여기서 인수는 주식 이름, 주식 수 및 주당 가격입니다.
t = Stock('IBM', 50, 91.5)

이 코드 줄에서는 IBM 을 나타내는 t라는 새 Stock 객체를 만들고 있습니다. 50 주를 가지고 있으며, 각 주식의 가격은 91.5 달러입니다.

  1. 이제 이 새 주식의 비용을 계산하려고 합니다. Stock 클래스에는 주식 수에 주당 가격을 곱하여 주식의 총 비용을 계산하는 cost()라는 메서드가 있습니다.
t.cost()

이 코드를 실행하면 Python 은 t 객체에서 cost() 메서드를 호출하고 총 비용을 반환합니다.

출력:

4575.0
  1. Python 의 문자열 서식을 사용하여 주식 정보를 깔끔하고 체계적인 방식으로 서식을 지정하고 표시할 수 있습니다. 문자열 서식을 사용하면 문자열에 다양한 유형의 데이터를 표시하는 방법을 지정할 수 있습니다.
print('%10s %10d %10.2f' % (s.name, s.shares, s.price))

이 코드에서는 Python 에서 이전 스타일의 문자열 서식을 사용하고 있습니다. % 연산자는 값을 문자열 템플릿에 대체하는 데 사용됩니다. 문자열 템플릿 '%10s %10d %10.2f'는 주식 이름, 주식 수 및 가격의 서식을 정의합니다.

출력:

      GOOG        100     490.10

이 서식 지정된 문자열은 다음과 같이 작동합니다.

  • %10s는 문자열을 너비가 10 자 (오른쪽 정렬) 인 필드로 서식을 지정합니다. 즉, 주식 이름은 너비가 10 자인 공간에 배치되고 해당 공간 내에서 오른쪽 정렬됩니다.
  • %10d는 정수를 너비가 10 자인 필드로 서식을 지정합니다. 따라서 주식 수는 너비가 10 자인 공간에 배치됩니다.
  • %10.2f는 소수점 2 자리로 부동 소수를 너비가 10 자인 필드로 서식을 지정합니다. 가격은 소수점 2 자리로 표시되고 너비가 10 자인 공간에 배치됩니다.
  1. 이제 IBM 주식 정보를 동일한 방식으로 서식을 지정해 보겠습니다. 문자열 서식 코드에서 객체 이름을 s에서 t로 바꾸기만 하면 됩니다.
print('%10s %10d %10.2f' % (t.name, t.shares, t.price))

출력:

       IBM         50      91.50
  1. 최신 Python 에서는 f-string 을 사용하여 서식을 지정할 수도 있습니다. f-string 은 더 읽기 쉽고 사용하기 쉽습니다. f-string 을 사용하여 두 주식의 비용을 비교해 보겠습니다.
print(f"Google stock costs ${s.cost()}, IBM stock costs ${t.cost()}")

이 f-string 에서는 중괄호 {} 안에 식을 직접 포함하고 있습니다. Python 은 이러한 식을 평가하고 결과를 문자열에 삽입합니다.

출력:

Google stock costs $49010.0, IBM stock costs $4575.0
  1. 실험을 마쳤으면 Python 대화형 모드를 종료할 차례입니다. exit() 함수를 사용하여 이 작업을 수행할 수 있습니다.
exit()

각 Stock 객체는 자체 속성 집합을 유지하며, 이는 객체 지향 프로그래밍에서 클래스 인스턴스가 작동하는 방식을 보여줍니다. 이를 통해 동일한 메서드를 공유하면서 서로 다른 값을 가진 여러 주식 객체를 만들 수 있습니다.

Stock 클래스 향상시키기

Python 에서 클래스는 데이터와 동작을 구성하는 강력한 방법입니다. 관련 데이터와 함수를 함께 그룹화할 수 있습니다. 이 섹션에서는 서식이 지정된 주식 정보를 표시하는 메서드를 추가하여 Stock 클래스를 향상시킬 것입니다. 이는 클래스에서 데이터와 동작을 모두 캡슐화하는 좋은 예입니다. 캡슐화는 데이터를 해당 데이터에 대해 작동하는 메서드와 함께 묶는 것을 의미하며, 이는 코드를 체계적으로 유지하고 관리하기 쉽게 만드는 데 도움이 됩니다.

  1. 먼저 WebIDE 편집기에서 stock.py 파일을 열어야 합니다. stock.py 파일은 Stock 클래스 작업을 해온 곳입니다. 편집기에서 열면 클래스 정의를 변경할 수 있습니다.

  2. 이제 새 display() 메서드를 추가하기 위해 Stock 클래스를 수정합니다. 이 메서드는 주식 정보를 보기 좋게 서식을 지정하여 출력하는 역할을 합니다. 방법은 다음과 같습니다.

class Stock:
    def __init__(self, name, shares, price):
        self.name = name
        self.shares = shares
        self.price = price

    def cost(self):
        return self.shares * self.price

    def display(self):
        print(f"Stock: {self.name}, Shares: {self.shares}, Price: ${self.price:.2f}, Total Cost: ${self.cost():.2f}")

__init__ 메서드에서는 주식 이름, 주식 수 및 가격을 초기화합니다. cost 메서드는 주식 수에 가격을 곱하여 주식의 총 비용을 계산합니다. 새로운 display 메서드는 f-string 을 사용하여 주식 정보 (이름, 주식 수, 가격 및 총 비용 포함) 의 서식을 지정하고 출력합니다.

  1. 이러한 변경을 수행한 후에는 파일을 저장해야 합니다. 키보드에서 Ctrl+S를 누르거나 편집기에서 저장 아이콘을 클릭하여 이 작업을 수행할 수 있습니다. 파일을 저장하면 변경 사항이 유지되고 나중에 사용할 수 있습니다.

  2. 다음으로, 새로운 Python 대화형 세션을 시작합니다. 대화형 세션을 사용하면 코드를 즉시 테스트할 수 있습니다. 세션을 시작하려면 터미널에서 다음 명령을 실행합니다.

python3 -i stock.py

-i 옵션은 stock.py 파일을 실행한 후 대화형 세션을 시작하도록 Python 에 지시합니다. 이렇게 하면 Stock 클래스와 해당 메서드를 즉시 사용할 수 있습니다.

  1. 이제 주식 객체를 만들고 새 display() 메서드를 사용해 보겠습니다. Apple 주식을 나타내는 객체를 만든 다음 display 메서드를 호출하여 서식이 지정된 정보를 확인합니다. 코드는 다음과 같습니다.
apple = Stock('AAPL', 200, 154.50)
apple.display()

대화형 세션에서 이 코드를 실행하면 다음과 같은 출력이 표시됩니다.

Stock: AAPL, Shares: 200, Price: $154.50, Total Cost: $30900.00

이 출력은 display 메서드가 올바르게 작동하고 주식 정보를 예상대로 서식을 지정하고 있음을 보여줍니다.

  1. 마지막으로, 주식 목록을 만들고 모두 표시해 보겠습니다. 이를 통해 여러 주식 객체와 함께 display 메서드를 사용하는 방법을 보여줍니다. 코드는 다음과 같습니다.
stocks = [
    Stock('GOOG', 100, 490.10),
    Stock('IBM', 50, 91.50),
    Stock('AAPL', 200, 154.50)
]

for stock in stocks:
    stock.display()

이 코드를 실행하면 다음과 같은 출력이 표시됩니다.

Stock: GOOG, Shares: 100, Price: $490.10, Total Cost: $49010.00
Stock: IBM, Shares: 50, Price: $91.50, Total Cost: $4575.00
Stock: AAPL, Shares: 200, Price: $154.50, Total Cost: $30900.00

display() 메서드를 클래스에 추가함으로써 서식 지정 로직을 클래스 자체 내에 캡슐화했습니다. 이렇게 하면 코드가 더 체계적이고 유지 관리하기 쉬워집니다. 주식 정보가 표시되는 방식을 변경해야 하는 경우 코드 전체에서 변경을 수행하는 대신 한 곳에서 display 메서드만 수정하면 됩니다.

요약

이 랩에서는 속성 (attribute) 과 메서드 (method) 를 사용하여 Python 클래스를 정의하고, 특정 속성 값을 가진 클래스 인스턴스 (instance) 를 생성하고, 객체 속성에 접근하고, 객체 메서드를 호출하는 방법을 배웠습니다. 또한 다양한 방식으로 객체 정보를 서식 지정하고 표시하고, 동일한 클래스의 여러 객체로 작업하고, 새로운 메서드를 추가하여 클래스를 향상시키는 방법을 배웠습니다.

이러한 객체 지향 프로그래밍 (object-oriented programming) 개념은 Python 에서 기본이며 더 큰 애플리케이션에서 코드를 구성하는 기반이 됩니다. 클래스는 관련 데이터와 기능을 그룹화하여 코드를 더 모듈화하고 유지 관리하기 쉽게 만듭니다. 기술을 더욱 향상시키려면 데이터 유효성 검사, 주식 또는 가격을 업데이트하는 메서드, 이익 또는 손실을 계산하는 메서드와 같은 기능을 Stock 클래스에 추가하는 것을 고려해 보세요.