2015-09-15 1 views
5

を設定します。ただし、チェーンなしで動作します。方法は、Pythonでチェーンをしませんが、私はPythonが複数の値からなる設定していると私はこのような連鎖の方法を使用したい

>>> g = f.copy() 
>>> g 
{1, 2, 3} 
>>> g.discard(3) 
>>> g 
{1, 2} 

誰かがこの現象を説明できますか?

+4

どのようにして、メソッドは一般的にはPythonで連鎖するという結論に至りましたか? – burnpanck

答えて

2

g = f.copy().discard(3)を実行すると、メソッド "discard(3)"の戻り値がgに格納されます。この場合、何も返しませんが、オブジェクトを変更します。このため、2番目のシナリオでは動作します。

5

discard()は、セット内の要素を破棄し、Noneを返します。

あなたは

g = f.copy().discard(3) 

を割り当てるときに、これはg = Noneであなたを残し

h = f.copy() # now h = f 
g = h.discard(3) # g = None; h = {1,2} 

に相当します。

0

.discardNoneを返すためです。

g = f.copy().discard(3)を実行すると、fのコピーが作成され、最後の要素が破棄され、Noneが返されます。返される最後のものは変数に代入されるものなので、gNoneの値で終わります。

+0

ありがとう、私は変数がチェーンの最後のメソッドの戻り値によって割り当てられることを理解していませんでした。 –

1

セットの-が値を生成し、入力を変更しないため、f - {3}の代わりにfoを使用できます。