[미래유망 2025-03-27]

돼지인간·2025년 3월 27일

미래유망

목록 보기
4/41

클래스를 활용한 예제 문제

사람 클래스에서 이름, 나이, 성별을 출력하는 who() 메소드를 추가하세요.

class Human:
  def __init__(self, name, age, sex): # 생성자에다 미리 넣어줌
    self.name = name # 이 변수가 어떤 변수인지 확인
    self.age = age
    self.sex = sex
  def who(self):
    print(f"이름 : {self.name}, 나이 : {self.age}, 성별 : {self.sex}") # f를 이용해 출력

areum = Human("조아름", 25, "여자")
areum.who()

사람 클래스에 이름, 나이, 성별을 받는 selfInfo 메소드를 추가히세요.

class Human:
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
    
  def who(self):
    print(f"이름 : {self.name}, 나이 : {self.age}, 성별 : {self.sex}")
    
  def selfInfo(self, name, age, sex): # self, name, age, sex로 새롭게 받아주는 함수
    self.name = name
    self.age = age
    self.sex = sex

areum = Human("모름", 0, "모름")
areum.selfInfo("아름", 25, "여자")
areum.who()

사람 클래스에 "나의 죽음을 알리지 말라"를 출력하는 소멸자를 추가하세요.

class Human:
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
  
  def __del__(self): # 소멸자
    print("나의 죽음을 알리지 마라.")

  def who(self):
    print(f"이름 : {self.name}, 나이 : {self.age}, 성별 : {self.sex}")

  def selfInfo(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex

areum = Human("모름", 0, "모름")
areum.selfInfo("아름", 25, "여자")
del(areum)

주식 종목에 대한 정보를 저장하는 Stock 클래스를 정의해보세요.
Stock 클래스의 객체가 생성될 때 종목명과 종목코드를 입력 받을 수 있도록 생성자를 정의해보세요.
객체에 종목명을 입력할 수 있는 set_name 메서드를 추가해보세요.
객체에 종목코드를 입력할 수 있는 set_code 메서드를 추가해보세요.
종목명과 종목코드를 리턴하는 get_name, get_code 메서드를 추가하세요.
해당 메서드를 사용하여 종목명과 종목코드를 얻고 이를 출력해보세요.

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

  def set_name(self, name):
    self.name = name
  
  def set_code(self, code):
    self.code = code
  
  def get_name(self):
    print(self.name)
  
  def get_code(self):
    print(self.code)

stock = Stock("None", "None")
stock.set_name("삼성전자")
stock.set_code("005930")
stock.get_name()
stock.get_code()

생성자에서 종목명, 종목코드, PER, PBR, 배당수익률을 입력 받을 수 있도록 생성자를 수정하세요. PER, PBR, 배당수익률float 타입입니다.

class Stock:
  def __init__(self, name, code, PER, PBR, 배당수익률):
    self.name = name
    self.code = code
    self.PER = PER
    self.PBR = PBR
    self.배당수익률 = 배당수익률

  def set_name(self, name):
    self.name = name
  
  def set_code(self, code):
    self.code = code
  
  def get_name(self):
    print(self.name)
  
  def get_code(self):
    print(self.code)

stock = Stock("삼성전자", "005930", 15.79, 1.33, 2.83)
stock.배당수익률

PER, PBR, 배당수익률은 변경될 수 있는 값입니다. 이 값을 변경할 때 사용하는 set_per, set_pbr, set_dividend 메서드를 추가하세요.

class Stock:
  def __init__(self, name, code, per, pbr, dividend):
    self.name = name
    self.code = code
    self.per = per
    self.pbr = pbr
    self.dividend = dividend

  def set_name(self, name):
    self.name = name
  
  def set_code(self, code):
    self.code = code
  
  def set_per(self, per):
    self.per = per

  def set_pbr(self, pbr):
    self.pbr = pbr

  def set_dividend(self, dividend):
    self.dividend = dividend

  def get_name(self):
    print(self.name)
  
  def get_code(self):
    print(self.code)
  

stock = Stock("삼성전자", "005930", 15.79, 1.33, 2.83)
stock.dividend # 배당 수익률 영어로 변경

아래의 표를 참조하여 3종목에 대해 객체를 생성하고 이를 파이썬 리스트에 저장하세요. 파이썬 리스트에 저장된 각 종목에 대해 for 루프를 통해 종목코드와 PER을 출력해보세요.

class Stock:
  def __init__(self, name, code, per, pbr, dividend):
    self.name = name
    self.code = code
    self.per = per
    self.pbr = pbr
    self.dividend = dividend

  def set_name(self, name):
    self.name = name
  
  def set_code(self, code):
    self.code = code
  
  def set_per(self, per):
    self.per = per

  def set_pbr(self, pbr):
    self.pbr = pbr

  def set_dividend(self, dividend):
    self.dividend = dividend

  def get_name(self):
    print(self.name)
  
  def get_code(self):
    print(self.code)
  

samsung = Stock("삼성전자", "005930", 15.79, 1.33, 2.83)
hyundai = Stock("현대차", "005380", 8.70, 0.35, 4.27)
lg = Stock("LG전자", "066570",	317.34,	0.69,	1.37)

stock = [samsung, hyundai, lg]

for i in stock: #   # i-> Stock 클래스의 객체를 바인딩하기 때문
  print(f"주식명 : {i.name}, 주식코드 : {i.code}, PER : {i.per}, PBR : {i.pbr}, 배당수익률 : {i.dividend}")

은행에 가서 계좌를 개설하면 은행이름, 예금주, 계좌번호, 잔액이 설정됩니다. Account 클래스를 생성한 후 생성자를 구현해보세요. 생성자에서는 예금주와 초기 잔액만 입력 받습니다. 은행이름은 SC은행으로 계좌번호는 3자리-2자리-6자리 형태로 랜덤하게 생성됩니다.
클래스 변수를 사용해서 Account 클래스로부터 생성된 계좌 객체의 개수를 저장하세요.
Account 클래스로부터 생성된 계좌의 개수를 출력하는 get_account_num() 메서드를 추가하세요.
Account 클래스에 입금을 위한 deposit 메서드를 추가하세요. 입금은 최소 1원 이상만 가능합니다.
Account 클래스에 출금을 위한 withdraw 메서드를 추가하세요. 출금은 계좌의 잔고 이상으로 출금할 수는 없습니다.

import random
class Account:
  account_count = 0
  def __init__ (self, name, money):
    self.name = name
    self.money = money
    self.bank = "SC은행"

    num1 = random.randint(0, 999) # 3자리 수 랜덤 생성
    num2 = random.randint(0, 99) # 2자리 수 랜덤 생성
    num3 = random.randint(0, 999999) # 6자리 수 랜덤 생성
    
    # .zfill(숫자) 빈 자리를 0으로 채워줌
    num1 = str(num1).zfill(3)      # 1 -> '1' -> '001'
    num2 = str(num2).zfill(2)      # 1 -> '1' -> '01'
    num3 = str(num3).zfill(6)      # 1 -> '1' -> '0000001'
    self.num = num1 + '-' + num2 + '-' + num3 # num에 세개의 랜덤 num을 더한 값을 넣어줌

    Account.account_count += 1
    
  @classmethod
  def get_account_num(cls):
    print(cls.account_count)  # Account.account_count

  def deposit(self, plusMoney):
    if plusMoney >= 1:
      self.money += plusMoney

  def withdraw(self, minusMoney):
    if self.money > minusMoney:
      self.money -= minusMoney
    else:
      print("출금할 수 없습니다")

kim = Account("김민수", 100)
kim.deposit(500)
kim.withdraw(1000)
print(kim.money)
le = Account("이만득", 200)

profile
안녕하세요 게임개발을 공부하고 있는 돼지인간 입니다.

0개의 댓글