Markanaチュートリアルを使用してOOPpythonを学習していますが、 Lab16.8で問題が発生しています。__iter__
(他のトラブルの中でも)正しい方法がわかりません。私の方法は次のようになります。
def __iter__(self):
for e in self.l_investments:
yield e
これが私のコード(そしてそれを実行した結果)です:http://hastebin.com/wayuwakode.py
表示される結果は次のとおりです。
>>> 'GOOG' in p
True
私は得る:
>>> 'GOOG' in p
False
pは、Portfolio()クラスのインスタンスです。「GOOG」は、Investment()オブジェクトのインスタンスの.nameプロパティです。pには、Investment()インスタンスのリストとディクショナリが含まれています。
メソッドを変更__iter__
して名前を生成できます。
def __iter__(self):
for e in self.l_investments:
yield e.name
これはそれを修正します'GOOG' in p == True
が、別の要件を破ります:
Failed example:
for stock in p:
print stock
Expected:
1000 shares of APPL worth 252730.00
5000 shares of CSCO worth 118700.00
500 shares of GOOG worth 245670.00
2000 shares of MSFT worth 50880.00
Got:
APPL
CSCO
GOOG
MSFT
__iter__
これらの要件の両方が満たされるように、メソッド(またはコードの他の部分)を変更するにはどうすればよいですか?
私は、この特定の問題を解決するよりも、OOPがどのように機能するかを学ぶことに興味があります。どんな助けでも大歓迎です!