@dplusg: Python kann nicht auf magische Weise erraten wie Du gerne Deine Objekte ausgegeben bekommen möchtest. Das musst *Du* schon selber definieren. Wenn man Objekte in eine Zeichenkette umwandelt, explizit mit `str()` oder in dem man es bei ``print`` angibt, dann wird die `__str__()`-Methode auf diesem Objekt aufgerufen. Bei Listen wird bei dieser Methode für jedes Element `repr()` aufgerufen, was wiederum die `__repr__()`-Methode auf den Elementen aufruft.
Entweder implemetierst Du diese Methode auf Deinem `Artikel`-Datentyp, dann aber bitte den Konventionen folgend entweder in Eine Zeichenkettenform die man im Quelltext schreiben könnte um wieder ein Objekt von dem Typ zu bekommen, oder Informationen die zur Fehlersuche geeignet sind in „spitzen Klammern”, wobei der Name des Datentyps als erstes kommen sollte, und danach genug Informationen um verschiedene Exemplare dieses Typs auseinander halten zu können.
Oder Du implementierst die `__str__()`-Methode — die ist für eine Zeichenkettendarstellung gedacht die Benutzer zu sehen bekommen können. Dann musst Du die Liste durchgehen und die Artikel einzeln ausgeben.
Alternativ könntest Du auch eine Funktion schreiben, die die Liste durchgeht und dann aus jedem Artikel eine Zeichenkette erstellt, die der Benutzer zu sehen bekommen soll.
Wegen der Namensschreibweisen und der Formatierung des Quelltextes (Leerzeichen) solltest Du mal einen Blick in den
Style Guide for Python Code werfen.
Das Schlüsselwort ``global`` vergisst Du bitte ganz schnell wieder. Hier wird das überhaupt nicht gebraucht. Und wenn es gebraucht wird, hat man in 99% der Fälle unsauberen Code geschrieben. Im Grunde ist der vorliegende auch ohne das unnötige ``global`` nicht so toll, weil einfach das (modul)globale `Bestandsliste`-Objekt verändert wird. Werte sollten Funktionen als Argumente betreten. Ausnahme sind Konstanten.
In Python 2.x sollte man explizit von `object` erben, wenn man sonst keine Basisklasse hat, damit man eine „new style”-Klasse bekommt. Sonst funktionieren nicht alle Spracheigenschaften mit den Objekten, die Python bietet.
``print`` ist keine Funktion sondern eine Anweisung. Darum sollte man es auch nicht schreiben als wäre es eine.