先給個例子:
>>> class frenchdeck:
ranks = [str(n) for n in range(2,11)] + list('jqka')
suits = 'spades diamonds clubs hearts'.split()
def __init__(self):
self._cards = [card(rank, suit) for suit in self.suits for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
魔法方法又稱雙下劃線方法,或者dunder method
通過魔法方法,可以賦予類一些build-in的操作,
比如:>>> deck = frenchdeck()
>>> len(deck)
而且魔法方法比直接呼叫普通的方法更快
因為存在getitem方法,還可以:
>>> deck[0]
card(rank='2', suit='spades')
所以也支援切片迭代等操作:
>>> deck[-3:-1]
[card(rank='q', suit='hearts'), card(rank='k', suit='hearts')]
也支援in 操作符
>>> for card in deck:
print(card)
card(rank='2', suit='spades')
card(rank='3', suit='spades')
python 魔法方法 python常用魔法方法
in 1 其實 str 相當於是str 方法 而 repr 相當於repr 方法。str是針對於讓人更好理解的字串格式化,而repr是讓機器更好理解的字串格式化。class test def init self,word self.word word def str self return my n...
python 魔法方法不會 Python 魔法方法
基礎 如果你想 所以,你寫 python呼叫 初始化乙個例項x myclass x.init 作為乙個字串的 官方 表示repr x x.repr 作為乙個字串str x x.str 作為位元組陣列bytes x x.bytes 作為格式化字串format x,format spec x.forma...
python的魔法函式
所以還是老老實實的把自己的基本功練好,物件導向玩的爐火純青,其他的不過是稍加訓練,跟賣藝的學幾招也能稱霸一片天。哈哈 牛吹的太過了,還是回到正題,總結分享一下一些稍微不太熟悉的魔法方法。一 str 它表示的是直接列印物件實現的方法,str 是被print函式呼叫的,一般都是返回乙個值,這個值是以字串...