python的魔法 Python 魔法方法

2021-10-19 03:25:57 字數 888 閱讀 6617

先給個例子:

>>> 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函式呼叫的,一般都是返回乙個值,這個值是以字串...