「Think Like a Computer Scientist」の問題 17.6 の一部として、Kangaroo というクラスを作成しました。
class Kangaroo(object):
def __init__(self, pouch_contents = []):
self.pouch_contents = pouch_contents
def __str__(self):
'''
>>> kanga = Kangaroo()
>>> kanga.put_in_pouch('olfactory')
>>> kanga.put_in_pouch(7)
>>> kanga.put_in_pouch(8)
>>> kanga.put_in_pouch(9)
>>> print kanga
"In kanga's pouch there is: ['olfactory', 7, 8, 9]"
'''
return "In %s's pouch there is: %s" % (object.__str__(self), self.pouch_contents)
def put_in_pouch(self, other):
'''
>>> kanga = Kangaroo()
>>> kanga.put_in_pouch('olfactory')
>>> kanga.put_in_pouch(7)
>>> kanga.put_in_pouch(8)
>>> kanga.put_in_pouch(9)
>>> kanga.pouch_contents
['olfactory', 7, 8, 9]
'''
self.pouch_contents.append(other)
私を夢中にさせているのは、書かれているようにユニットテストに合格する文字列メソッドを書きたいということ__str__
です。代わりに私が今得ているのは:
In <__main__.Kangaroo object at 0x4dd870>'s pouch there is: ['olfactory', 7, 8, 9]
基本的に、関数の出力がこれらの5文字、つまり関数(カンガ)->「カンガ」になるように、カンガ=カンガルーで実行できる関数があるかどうか疑問に思っています。
何か案は?
編集:
最初の回答を読んで、元の質問をもっと簡潔に尋ねる方法があることに気付きました。__init__
次のコードが書かれたとおりに有効になるように書き換える方法はありますか?
>>> somename = Kangaroo()
>>> somename.name
'somename'