파이썬 클래스에 format함수 사용하기

조회수 1075회

클래스 안에 함수를 미리 정의해서 언제든 import로 불러와서 사용해볼려고합니다.

원하는 출력값은 "m1 : 연애는 잘 하고 있니? g1 아?"

def romance(self, listener):
    print("{}: 연애는 잘 하고 있니? {}아?".format(self, listener))

이런 형식으로 짜봤는데 자꾸 오류가 나오기도하고 import했는데도 함수가 정의되지 않앗다고 뜰때도 있어서 이렇게 질문 올려봅니다

format 함수를 쓰지않는 다른 방법이 있다면 알려주시면 감사하겠습니다.

2 답변

  • 질문이 완전히 이해가 되지는 않습니다.

    일단 제가 이해한만큼 작성해봤습니다.

    In [1]: class My: 
       ...:     def romance(self, listener): 
       ...:         print("{}: 연애는 잘 하고 있니? {}아?".format(self, listener)) 
       ...:     def __str__(self): 
       ...:         return self.__class__.__name__
    
    In [2]: My().romance("아무개")                                                                                        
    My: 연애는 잘 하고 있니? 아무개아?
    
    • 네 제가 생각했던 소스코드에요! 근대 여기에 __str__ 이 들어가는 이유를 여쭤봐도 될까요? 제가 저 romance 함수 말고 저 클래스에 __init___ 로 일단 기본값은 정해둘려고하는데 str이면 문자열인데.. 제가 잘 모르겠어요... 알 수 없는 사용자 2019.5.5 15:12
    • 아...혹시 자바, c# 같은 언어를 해보셨다면 toString 같은 것이라고 이해하면 좋겠습니다. 파이썬에서는 이러한 메서드를 매직 베서드라고 부릅니다. __str__ 의 용도는 print(객체) 을 했을시 객체에 정의된 __str__의 값을 반환하게 됩니다. 즉 위의 코드는 클래스의 객체를 string이 필요한 곳에 대입했을시 이름을 반환하게 한 것입니다. 정영훈 2019.5.5 17:55
    • 아아 제가 처음으로 접해서 공부하는 것이 파이썬이여서 기초지식이 좀 부족했네요 친절한 답변 감사드리며 항상 성심성의껏 답변달아주셔서 감사합니다! 알 수 없는 사용자 2019.5.7 22:36
  • 안녕하세요.

    format 함수가 아닌 다른 방법이라면 fstring을 쓰는건 어떨까요?

    s1 = 'A'
    s2 = 'B'
    
    # format
    # {} 가 두개면 변수도 두개를 넣어줘야 해요!
    print('{}: 연애는 잘 하고 있니? {}아'.format(s1, s2))
    
    # fstring
    print(f'{s1}: 연애는 잘 하고 있니? {s2}아')
    

    그리고 self는 매개변수로 생각하시지 마시고

    def romance(self, listener1, listener2):
        print("{}: 연애는 잘 하고 있니? {}아?".format(listener1, listener2))
    

    이런식으로 써야 에러가 안날것 같습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)