점프 투 파이썬 class 질문드립니다.
class BankAccount:
  def __init__(self, name, account_num, balance):
    self.name=name
    self.account_num=account_num
    self.balance=balance
  def __str__(self):
    return ''+str(self.name)+'', '님의 계좌', ''+str(self.account_num)+'', '의 잔고는', ''+str(self.balance)+'', '원입니다.'
  def get_name(self):
    return ''+self.name+''
  def get_account_num(self):
    return ''+self.account_num+''
  def get_balance(self):
    return ''+self.balance+''
  def deposit(money):
    balance=balance+money
    print(money, '원이 입금되었습니다. 잔고는', balance, '원입니다.')
  def withdraw(money):
    if balance >= money:
      balance=balance-money
    else:
      print('계좌 잔고는', balance, '원으로 인출 요구 금액', money, '원보다 작습니다.')

account1=BankAccount('홍길동', '1234-0001', '0')
print(account1)

실행하면 마지막 줄인 'ptiny(account1)에서 '__str__ returned non-string (type tuple)' 이런 오류가 뜨는게 어떻게 해결해야 할까요?

초보에유 708

M 2022년 11월 27일 11:42 오전

목록으로
2개의 답변이 있습니다. 1 / 1 Page

print(account1)가 문제입니다.


account1=BankAccount('홍길동', '1234-0001', '0')
print(account1)
---------------------------------- 이부분 삭제하세요.
print(BankAccount('홍길동', '1234-0001', '0').str()) 으로 바꾸어 주어야 합니다.
질의자님이 주신 명령은 클래스를 print하라는건데, 그렇게 사용하시면 안되시고,
BankAccount라는 클래스에서 str() 함수를 프린터 해줘 라고 쓰셔야 합니다.
__str__함수에는 print()가 없지만, 리턴값을 가지므로, 리턴값을 출력하면 해당 print()출력과 같아지게 되겠지요.

jayb8463

2022년 12월 22일 4:02 오후

print(BankAccount('홍길동', '1234-0001', '0').__str__()) 혹은 def__init(self, name, account_num, balance): 함수에서 self.balance= balance 밑에 print(self.__str__())를 추가하셔서 BankAccount('홍길동', '1234-0001', '0') 라고 할당 동시에, 실행 되는 점을 이용하여 print가 자동으로 되도록 하는 것도 좋아 보입니다. - jayb8463님, 2022년 12월 22일 4:04 오후 추천 , 대댓글
class BankAccount: def __init__(self, name, account_num, balance): self.name=name self.account_num=account_num self.balance=balance print(self.__str__()) def __str__(self): return ''+str(self.name)+'', '님의 계좌', ''+str(self.account_num)+'', '의 잔고는', ''+str(self.balance)+'', '원입니다.' def get_name(self): return ''+self.name+'' def get_account_num(self): return ''+self.account_num+'' def get_balance(self): return ''+self.balance+'' def deposit(money): balance=balance+money print(money, '원이 입금되었습니다. 잔고는', balance, '원입니다.') def withdraw(money): if balance >= money: balance=balance-money else: print('계좌 잔고는', balance, '원으로 인출 요구 금액', money, '원보다 작습니다.') print(BankAccount('홍길동', '1234-0001', '0').__str__()) - jayb8463님, 2022년 12월 22일 4:05 오후 추천 , 대댓글
def __str__():

함수가 스트링이 아닌 튜플을 반환하고 있습니다.

def __str__():

함수의 리턴값을 스트링으로 바꾸어주세요.

return에 , 로 구분을 하게되면 튜플로 반환하게 됩니다.

,를 +로 바꾸시든 f"{self.name}님의 계좌 {self.account_num}의 잔고는 f{self.balance}원입니다." 로 바꾸어보시고

python f-string에 관해 알아보세용

내장 함수인

def __str__():

에 대해서도 정확히 이해하세용

def __repr__():

도 함께

pbase

M 2023년 1월 3일 10:25 오전