python __str__, pour un objet

Tout en essayant de comprendre comment BeautifulSoup fonctionne, j'ai d'ailleurs appris la __str__ méthode (je suis nouveau sur python). Donc, si je n'ai pas tort alors la __str__ méthode contribue à façonner la manière dont la classe sera représentée si imprimé. Par exemple:

class Foo:
    def __str__(self):
        return "bar"

>>> x = Foo()
>>> print x
bar

Droit? Donc affirmer que j'ai raison, est-il possible de remplacer le __str__ méthode d'une liste de dictionnaires? Je veux dire que dans la classe Foo vous avez:

class Foo:
   def __init__(self):
      self.l = [{"Susan": ("Boyle", 50, "alive")}, {"Albert": ("Speer", 106, "dead")}]

Maintenant, est-il possible d'avoir le résultat suivant?

>>> x = Foo()
>>> print x.l
"Susan Boyle is 50 and alive. Albert Speer is 106 and dead."

MODIFIER

Considérant agf solution, comment puis-je accéder au dictionnaire une fois de plus? Je veux dire, si je définis __str__ méthode, puis apparemment je doit définir quelque chose d'autre pour récupérer le dictionnaire comme il est. Veuillez considérer l'exemple suivant:

class PClass(dict):
    def __str__(self):
        # code to return the result that I want 

class Foo:
    def __init__(self):
        self.l = PClass({"Susan": ["Boyle", ........ })

>>> x = Foo()
>>> print x.l 
# result that works great
>>> y = x.l["Susan"] # this would not work. How can I achieve it? 
Pas sans sous-classement dict, pas.
Non, même si vous pouvez certainement la conception de votre Foo classe pour stocker les informations d'une manière qui permettrait d'impression. Vous ne pouvez pas modifier une liste de __str__ méthode; il est intégré.
Par ailleurs, si vous souhaitez en savoir plus sur __str__ et des méthodes similaires, je suggère la lecture par exemple, cet article. Ces méthodes sont appelées "magie" des membres de la ou des méthodes.
merci beaucoup je vais le lire tout de suite
Est-ce un cas d'utilisation de descripteurs?

OriginalL'auteur Shaokan | 2011-08-22