首頁 >後端開發 >Python教學 >python定制類別__str__(實例詳解)

python定制類別__str__(實例詳解)

乌拉乌拉~
乌拉乌拉~原創
2018-08-23 13:37:552472瀏覽

在以下的文章之中我們來了解一下什麼是python中的客製化類別。了解一下什麼是python客製化類別,以及python客製化類別在python程式設計之中能起到什麼樣的作用。

看到類似__slots__這種形如__xxx__的變數或函數名稱就要注意,這些在Python中是有特殊用途的。

__slots__我們已經知道怎麼用了,__len__()方法我們也知道是為了能讓class作用於len()函數。

除此之外,Python的class中還有許多這樣有特殊用途的函數,可以幫助我們定制類別

python定制類別__str__(實例詳解)

__str__

#我們先定義一個Student類,列印一個實例:

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

印出一堆<__main__.student object 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)

這樣列印出來的實例,不但好看,而且容易看出實例內部重要的資料。

但細心的朋友會發現直接敲變數不用print,印出來的實例還是不好看:

>>> 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__的相關知識,希望你能藉助資料從而理解上述所說的內容。希望我在這片文章所講述的內容能夠對你有幫助,讓你學習python更加輕鬆。

更多相關知識,請造訪php中文網Python教學欄位。

以上是python定制類別__str__(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn