2017-08-05 81 views
1

官方文件說:哪裏可以找到__bytes__方法?

object.__bytes__(self)

通過bytes調用來計算對象的字節串 表示。這應該返回一個bytes對象。

但是當我做dir(object)dir(bytes)dir(bytearray),在__bytes__方法沒有顯示出來。那麼它在哪裏可以找到?

+0

那麼這是合理的是不是:'字節'是一種將*轉換爲*字節的方法,所以它被添加到轉換爲'字節'的對象,而不是'字節'本身。 –

+0

你能給我一個它添加的對象的例子嗎? – debashish

+0

怎麼樣:'字節([1,2,3])'。另請參閱[docs](https://docs.python.org/3.6/library/functions.html#func-bytes) – Gerrat

回答

1

PEP 428pathlib(因爲Python 3.4)可能是bytes最常見的用法。

路徑的字符串表示是原始文件系統路徑本身(以天然形式,例如在Windows下反斜槓),它可以傳遞給任何函數取一個文件路徑作爲一個字符串:

>>> 
>>> p = PurePath('/etc') 
>>> str(p) 
'/etc' 

類似地,路徑上的呼叫的字節給出的原始文件系統路徑作爲字節對象,如由os.fsencode()編碼:

>>> 
>>> bytes(p) 
b'/etc' 

這些轉換通過pathlib.__str__()pathlib.__bytes__()魔法發生。

+1

我想如果爲自定義對象定義了一個__bytes__方法,那麼'bytes'內建函數將返回一個字節表示的對象。該方法在任何內建類型中都不可用。 – debashish