2017-08-05 20 views
1

公式ドキュメントは言う:__bytes__メソッドはどこにありますか?

オブジェクトのバイト列 表現を計算するために bytesによって呼び出され

object.__bytes__(self)

。これにより、bytesオブジェクトが返されます。

しかし、私はdir(object)またはdir(bytes)またはdir(bytearray)を行う際に、__bytes__方法は表示されません。だからどこで見つかるの?

+0

これは妥当ではありません: 'bytes'は*を*バイトに変換するメソッドなので、' bytes'自体にではなく、 'bytes'に変換するオブジェクトに追加されます。 –

+0

追加されたオブジェクトの例を教えてもらえますか? – debashish

+0

どのように: 'bytes([1,2,3])'。 [docs](https://docs.python.org/3.6/library/functions.html#func-bytes) – Gerrat

答えて

1

PEP 428pathlib(Python 3.4以降)は、bytesの最も一般的な使用方法です。

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

パスの文字列表現を使用すると、文字列としてファイルパスを取る任意の関数に渡すことができ、(Windowsでバックスラッシュを持つ天然の形態で、例えば)生のファイルシステムのパスそのものであります

os.fsencodeによってコード同様に、経路上のバイトを呼び出すと(、バイト・オブジェクトとして生のファイルシステムのパスを与える):

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

これらの変換pathlib.__str__()pathlib.__bytes__()という魔法の方法で起こります。

+1

カスタムオブジェクトに対して' __bytes__'メソッドが定義されていれば、 'bytes'組み込み関数はバイト表現を返しますオブジェクトのこのメソッドは、組み込み型では使用できません。 – debashish

関連する問題