python观察日志(part15)--命名元祖namedtuple
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                python观察日志(part15)--命名元祖namedtuple
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                學習筆記,有錯必糾
命名元祖namedtuple
有很多簡單的對象其實可以看做幾個相關值的集合,例如,在下面這段代碼中,我們定義Point類,它包含兩個數字x和y:
class Point:def __init__(self, x = 0, y = 0, z = 0):self.x = xself.y = yself.z = zdef __str__(self):return "({}, {}, {})".format(self.x, self.y, self.z)p = Point(1, 2, 3) print(p)輸出:
(1, 2, 3)這里,我們用很多代碼來傳達很少的意思。
Python為我們提供了更簡潔的方式來表達同一個意思:
from collections import namedtuple Point = namedtuple('Ponit', ['x', 'y', 'z'])可以看到,第一個參數為我們想要創建的類名,第二個參數是我們想要創建的類所包含的屬性列表,均以字符串表示。namedtuple的返回值是一個類對象:
In [14]: Point Out[14]: __main__.Ponit這里Point類會自動提供__init__和__str__這樣的方法,所以我們不需要重寫它們。
我們可以創建一個Point類的對象:
point = Point(4, 5, 6) print(point)輸出:
Ponit(x=4, y=5, z=6)我們也可以使用名稱來訪問命名元祖的元素:
In [16]: point.x,point.y,point.z Out[16]: (4, 5, 6)也可以直接把命名元祖當做元祖來使用:
In [18]: point[0], point[1] Out[18]: (4, 5)命名元祖提供了快速的定義簡單類的方式,但缺點是簡單的類并不會總是保持簡單,可能之后我們要給命名元祖添加方法,這時,我們可以定義一個新類,繼承當前的命名元祖:
from collections import namedtuplePoint = namedtuple('Ponit', ['x', 'y', 'z'])class NewPoint(Point):def _init__(self, x = 0, y = 0, z = 0):super.__init__(x, y, z)def distance(self):return (self.x**2 + self.y**2 + self.z**2)**(1/2)newp = NewPoint(3, 0, 4) print(newp.distance())輸出:
5.0 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python观察日志(part15)--命名元祖namedtuple的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: TP-Link TL-WDR6300 V
- 下一篇: 关于思念家人的句子262个
