1

reprを実装する他のオブジェクトを含むオブジェクトのreprメソッドをどのように実装する必要があるのか​​興味があります。

例(pythonish):

class Book():
    def__repr__
        return 'author ... isbn'

class Library(): 
    def __repr__:
        me ='['
        for b in books:
            me = me + b.repr()
        me = me + ']'
        return me

そのrepr()メソッドを直接呼び出す必要がありますか?私はそれを単に連結して、暗黙的に文字列に変換させることはできないようです。

4

2 に答える 2

2

You want repr(b), not b.repr. repr is a function. __repr__ is the magic method called on an object when you call repr on that object.

于 2013-02-05T06:44:13.663 に答える
2

インスタンスでrepr()関数を呼び出します。Book

object.__repr__(self)[ドキュメント]

Called by the repr() built-in function and by string conversions (reverse quotes)
to compute the “official” string representation of an object. [...] The return 
value must be a string object. If a class defines __repr__() but not __str__(),
then __repr__() is also used when an “informal” string representation of 
instances of that class is required.

class Book(object):    
    def __repr__(self):
        return 'I am a book'

class Library(object):    
    def __init__(self,*books):
        self.books = books
    def __repr__(self):
        return ' | '.join(repr(book) for book in self.books)

b1, b2 = Book(), Book()
print Library(b1,b2)

#prints I am a book | I am a book
于 2013-02-05T06:49:12.023 に答える