私は、タプルを置き換えるために使用しているポイントを表すクラスを持っています。タプルで私はちょうど呼び出すことができますx, y = point
どのようにクラスでこの機能をエミュレートできますか? __repr__
はタプルを返すことができますが、printを呼び出そうとするとTypeError: __repr__ returned non-string (type tuple)
がスローされます。この機能はタプルのためにどのように処理されますか?Pythonクラス。値に割り当てられたときよりも、印刷や書式で呼び出されたときに値が異なる
0
A
答えて
4
x, y = some_object
のような複数の代入文の右側にあるタプルのようにクラスのインスタンスを使用できるようにするには、クラスを反復可能にする必要があります。その動作はクラスの__repr__
とは関係ありません。
(あなたが必要とする追加のどんな方法で)このような何かを試してみてください。このクラスの
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __iter__(self):
yield self.x
yield self.y
def __repr__(self):
return "{}({}, {})".format(type(self).__name__, self.x, self.y)
インスタンスがアンパックが動作することを意味し、反復可能です。また、印刷するか、str
またはrepr
で文字列に変換することもできます。
+0
ありがとう、これは私が必要なものです! –
2
独自のクラスを使用しないで、collections.namedtuple
を代わりに使用しますか? help(collections.namedtuple)
はポイントタイプの例でもあります
1
アンパックは本質的に反復です。ここでは、Point
クラスでこれを実装する方法の概略は以下のとおりです。
>>> class Point:
... def __init__(self, x=0, y=0):
... self._values = (x, y)
... def __iter__(self):
... return iter(self._values)
...
>>> p = Point(1,2)
>>> a,b = p
>>> a
1
>>> b
2
>>>
編集は、当然のことながら、ここで私はタプルをラップしますが、iterator protocol実装して何かを解凍することができます。
関連する問題
- 1. 動的に割り当てられたメモリから印刷するときに値が変更されます
- 2. Javascript:クラスインスタンスのオブジェクト。変数から呼び出されたときに値が再割り当てされる
- 3. メソッドが呼び出されたときにMoqを使用してプロパティ値を割り当てる
- 4. プロシージャが呼び出されたときにEXECUTE IMMEDIATE内に変数が割り当てられない
- 5. Swift - 非同期呼び出し(Firebase)に割り当てられた戻り値
- 6. 後で呼び出されたときに変数シームが割り当てられない
- 7. 変数の値が割り当てられた値と異なる
- 8. pythonが印刷されたときにファイルに書き込む
- 9. KVO割り当てられた値が異なるものではない
- 10. 汎用メソッド内から呼び出されたときに変数に値が割り当てられることはありません
- 11. R機能 - 割り当てられていないときに印刷
- 12. 読書テキストファイル変数と更新された割り当てられた値は
- 13. グローバル変数は、別の関数から呼び出されたときに値が異なります
- 14. java.lang.NullPointerExceptionでも値が割り当てられました。Firebase datasnapshot
- 15. jQuery AJAXリクエストに値が割り当てられたときにPHP変数が設定されない理由
- 16. InvalidOperationException:SubmitChangesを呼び出すときにnull値を割り当てることができません
- 17. Pythonで変数が割り当てられていないときに変数を割り当てよう
- 18. 割り当てられたパイプラインを呼び出さないで治療する
- 19. xamlで割り当てられたICommandを呼び出す
- 20. 関数呼び出しにどのように値を割り当てることができますか?
- 21. プログラムがクラッシュし、あまりにも多くの動的に割り当てられた配列をに値を割り当てるとき - C++
- 22. 値が型キャストされたときにアドレス値が異なる
- 23. 値を割り当てないで変数を印刷する
- 24. jconfirmが呼び出されたときにチェックボックスの値が失われる
- 25. SHCNF_FLUSHNOWAITパラメータでSHChangeNotifyが呼び出されたときにパラメータに割り当てられたメモリを解放できますか?
- 26. 割り当てられたヒープメモリと異なるサイズのドロワーブル
- 27. 削減呼び出し、与えられたヒープ割り当てられたオブジェクト
- 28. ajaxから切り替えたときにjqueryが呼び出されない
- 29. l値とr値が割り当てられたときにconst参照が異なる動作をするのはなぜですか?
- 30. キーが呼び出されるたびに異なる値を出力する
ここでのアドバイスを読んで、それに従ってください:[最小限で完全であり、かつ検証可能な例の作成方法](http://www.stackoverflow.com/help/mcve) –
これは非常に混乱しているようです。 'x、y = some_object'はアンパックされ、繰り返し可能な型が必要です。 '__repr__'や印刷とは関係ありません。 – Blckknght
あなたの 'Point'クラスは' tuple'や 'list'から継承できます。 –