goodthings4me.tistory.com
■ 파이썬에서 어떤 값(또는 객체)을 문자열로 변환하는데 사용하는 str()은 내장 함수가 아닌 파이썬 내장 클래스이며, 객체를 만들고 그 객체의 정보(클래스 이름, 저장 위치 등)를 알고싶을 때 print(객체이름)를 사용하는데, 이는 object 클래스의 __str__ 메서드가 호출되어 반환된 문자열 정보이다.
>>> str
<class 'str'>
>>>
>>> t = (1, 2, 3)
>>> str(t)
'(1, 2, 3)'
>>> t.__str__() # == str(t)
'(1, 2, 3)'
>>>
>>>
>>> class Simple:
... def __init__(self):
... pass
...
>>> s = Simple()
>>>
>>> print(s)
<__main__.Simple object at 0x000002AFCE072D68>
>>>
>>> s.__str__() # str(s)와 같음
'<__main__.Simple object at 0x000002AFCE072D68>'
>>>
■ 이러한 __str__의 문자열 반환 기능을 오버라이딩하여 쓸수 있다.(필요한 경우에 사용하면 좋음)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '{0}: {1}'.format(self.name, self.age)
def main():
p = Person('James', 23)
print(p) # James: 23 --> __str__ 호출
main()
class InfoID:
def __init__(self):
pass
def __str__(self):
return "생성된 객체 id() : " + str(id(self))
def main():
a = InfoID()
print(a) # 생성된 객체 id() : 2185199773232 --> __str__ 호출
main()
※ __str__이 print로 출력하는 일반 문자열을 표기하는 방식인 반면, __repr__은 객체 생성 방법을 알 수 있도록 하는 표준 문자열 표기 방식이라고 하는데, __str__, __repr__ 모두 파이썬 객체(파이썬의 모든 것)에 대해 문자열로 표현(반환)하는 것은 같다.
>>> class Simple:
... def __init__(self):
... pass
...
>>> s = Simple()
>>>
>>> print(s)
<__main__.Simple object at 0x000002AFCE072D68>
>>>
>>> s.__str__()
'<__main__.Simple object at 0x000002AFCE072D68>'
>>>
>>> s.__repr__()
'<__main__.Simple object at 0x000002AFCE072D68>'
>>>
※ __str__ 과 __repr__ 의 차이점
>>> class Info_id:
... def __str__(self):
... return "id() : " + str(id(self))
...
>>> class Info_id:
... def __str__(self):
... return "id() : " + str(id(self))
... def __repr__(self):
... return "나는 Info_id 클래스입니다."
...
>>> Info_id
<class '__main__.Info_id'>
>>> print(Info_id)
<class '__main__.Info_id'>
>>>
>>> i = Info_id()
>>> i <------------------------ __repr__ 호출
나는 Info_id 클래스입니다.
>>> print(i) <------------------ __str__ 호출
id() : 1873072891272
>>>
>>> Info_id() <----------------- __repr__ 호출
나는 Info_id 클래스입니다.
>>> print(Info_id()) <---------- __str__ 호출
id() : 1873072931504
>>>
[참고자료] 윤성우의 열혈파이썬 중급편
블로그 인기글
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
폐업 신고 절차와 부가가치세 신고하는 방법
폐업 신고 시 세무서 안 가고 온라인으로 신고하는 방법인 '국세청 홈택스를 이용하여 폐업 신고하는 절차와 폐업 후 해야 하는 부가가치세 신고, 인건비 저리, 종합소득세 신고 등에 대해 포스팅합니다. 폐업 신고 시 홈택스 이용하는 방법과 부가가치세 등 신고 절차 여러가지 사유로 폐업을 해야 할 때, 예전에는 세무서를 방문해야 했지만 국세청 홈택스가 생긴 이후에는 사업자 등록이나 폐업 등을 인터넷으로 할 수가 있게 되었습니다. 특히, 코로나 시국인 요즘은 더더욱 온라인 신청 업무가 더 활성화되었죠. 폐업을 한다는 것 자체가 우울한 일인데, 발품을 파는 것보다는 커피 한잔 하면서 인터넷으로 간단하게 처리하는 게 좋을 듯하여 그 절차를 올려봅니다. 폐업은 폐업 신고와 함께 폐업 후 절차까지 모두 마쳐야 불이익이..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 __slots__의 효과 (0) | 2020.09.14 |
---|---|
[python] 파이썬의 정보은닉(Information Hiding)과 __dict__ 메서드에 대해 (0) | 2020.09.13 |
[python] 파이썬 __init__, __str__, __iter__, __next__ 등의 메서드 (0) | 2020.09.12 |
[python] 파이썬 파일 쓰기, 읽기 - open(), read(), readline(), readlines() (0) | 2020.09.11 |
[python] 파이썬 클래스 상속(inheritance) (0) | 2020.09.10 |
댓글