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,所以在建立後不能改值。
- 就算是透過繼承,也不能再增加新的欄位定義。
官方文件
---
---
---
沒有留言:
張貼留言