>백엔드 개발 >파이썬 튜토리얼 >Python 사용자 정의 클래스 __str__(자세한 예)

Python 사용자 정의 클래스 __str__(자세한 예)

乌拉乌拉~
乌拉乌拉~원래의
2018-08-23 13:37:552483검색

다음 글에서는 파이썬의 맞춤형 클래스가 무엇인지 알아보겠습니다. python 사용자 정의 클래스가 무엇인지, Python 사용자 정의 클래스가 Python 프로그래밍에서 어떤 역할을 할 수 있는지 알아보세요.

__slots__과 같은 __xxx__ 형식의 변수나 함수 이름이 표시되면 Python에서 특별한 용도로 사용됩니다.

우리는 이미 __slots__를 사용하는 방법을 알고 있으며 클래스가 len() 함수에 대해 작동할 수 있도록 하는 __len__() 메서드도 알고 있습니다.

또한 Python 클래스에는 클래스 사용자 정의에 도움이 되는 특수 목적 함수가 많이 있습니다.

Python 사용자 정의 클래스 __str__(자세한 예)

__str__

먼저 Student 클래스를 정의하고 인스턴스를 인쇄합니다.

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...
>>> print(Student('Michael'))
<__main__.Student object at 0x109afb190>

<__main__.student at>을 인쇄합니다. 꽤 보기 흉합니다.

어떻게 하면 예쁘게 인쇄할 수 있나요? __str__() 메서드를 정의하고 보기 좋은 문자열을 반환하기만 하면 됩니다.

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return &#39;Student object (name: %s)&#39; % self.name
...
>>> print(Student(&#39;Michael&#39;))
Student object (name: Michael)

이렇게 인쇄된 인스턴스는 보기에도 좋을 뿐만 아니라 인스턴스 내부의 중요한 데이터를 쉽게 볼 수 있게 해줍니다.

하지만 주의 깊은 친구들은 인쇄하지 않고 변수를 직접 입력하면 인쇄된 예제가 여전히 좋아 보이지 않는다는 것을 알게 될 것입니다.

>>> s = Student(&#39;Michael&#39;)
>>> s<__main__.Student object at 0x109afb310>

이것은 변수 호출의 직접 표시가 __str__()이 아니라 __repr__()이기 때문입니다. 두 가지 __str__()은 사용자가 보는 문자열을 반환하고, __repr__()은 프로그램 개발자가 보는 문자열을 반환합니다. 즉, __repr__()은 디버깅을 위한 것입니다.

해결책은 또 다른 __repr__()을 정의하는 것입니다. 하지만 일반적으로 __str__()과 __repr__()의 코드는 동일하므로 게으르게 작성하는 방법도 있습니다.

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return &#39;Student object (name=%s)&#39; % self.name
    __repr__ = __str__

위 내용은 이 글의 내용 전부입니다. 이 글에서는 주로 python 사용자 정의 클래스_ _str__ 관련 내용을 소개합니다. 지식, 위의 내용을 이해하는 데 정보를 사용할 수 있기를 바랍니다. 이 글에서 제가 설명한 내용이 여러분에게 도움이 되고 파이썬을 더 쉽게 배울 수 있기를 바랍니다.

더 많은 관련 지식을 알고 싶으시면 PHP 중국어 홈페이지의 Python tutorial 칼럼을 방문해 주세요.

위 내용은 Python 사용자 정의 클래스 __str__(자세한 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.