官方文件說:哪裏可以找到__bytes__方法?
object.__bytes__(self)
通過
bytes
調用來計算對象的字節串 表示。這應該返回一個bytes
對象。
但是當我做dir(object)
或dir(bytes)
或dir(bytearray)
,在__bytes__
方法沒有顯示出來。那麼它在哪裏可以找到?
官方文件說:哪裏可以找到__bytes__方法?
object.__bytes__(self)
通過
bytes
調用來計算對象的字節串 表示。這應該返回一個bytes
對象。
但是當我做dir(object)
或dir(bytes)
或dir(bytearray)
,在__bytes__
方法沒有顯示出來。那麼它在哪裏可以找到?
PEP 428的pathlib
(因爲Python 3.4)可能是bytes
最常見的用法。
路徑的字符串表示是原始文件系統路徑本身(以天然形式,例如在Windows下反斜槓),它可以傳遞給任何函數取一個文件路徑作爲一個字符串:
>>> >>> p = PurePath('/etc') >>> str(p) '/etc'
類似地,路徑上的呼叫的字節給出的原始文件系統路徑作爲字節對象,如由os.fsencode()編碼:
>>> >>> bytes(p) b'/etc'
這些轉換通過pathlib.__str__()
和pathlib.__bytes__()
魔法發生。
我想如果爲自定義對象定義了一個__bytes__方法,那麼'bytes'內建函數將返回一個字節表示的對象。該方法在任何內建類型中都不可用。 – debashish
那麼這是合理的是不是:'字節'是一種將*轉換爲*字節的方法,所以它被添加到轉換爲'字節'的對象,而不是'字節'本身。 –
你能給我一個它添加的對象的例子嗎? – debashish
怎麼樣:'字節([1,2,3])'。另請參閱[docs](https://docs.python.org/3.6/library/functions.html#func-bytes) – Gerrat