class Book: def __init__(self, title, author): self.title = title self.author = author def __str__(self): return 'Book(title=\'' + self.title +'\', author=\'' + self.author + '\')' b = Book('Python Vol.2', 'Jet') print(b) # Book(title='Python Vol.2', author='Jet') print(b.title, b.author) # Python Vol.2 Jet透過 namedtuple 來定義一個 class 只要一行 code,而且可以用 [N] 取用欄位。
Book = namedtuple('Book', ['title', 'author']) b = Book('Python Vol.3', 'Swan') print(b) # Book(title='Python Vol.3', author='Swan') print(b.title == b[0]) # True print(b.author == b[1]) # True t, a = b print(t, 'by', a) # Python Vol.3 by Swan也可以透過繼承來增加自訂的 method。
class Ebook(Book): def format(self): return self.title + ', ' + self.author b = Ebook('Python Vol.4', 'Queen') print(b) # Ebook(title='Python Vol.4', author='Queen') print(b.format()) # Python Vol.4, Queen但有一些限制。
- 最大的一點是 immutable,因為 namedtuple 是建立一個 tuple 的 subclass,所以在建立後不能改值。
- 就算是透過繼承,也不能再增加新的欄位定義。
官方文件
---
---
---
沒有留言:
張貼留言