Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
class testklasse (object):
a = 1000
print a
def __init__(self, a):
self.a = a
print a
def aendern (self):
a = 500
def ausgeben (self):
print a
hier findet er in der funktion 'ausgeben' kein a. Warum erkennt er das nicht?
so, jetzt soll in einem Anderen Modul testklasse initialisiert werden, und anschließend mit 'ausgeben' ausgegeben werden, was er jedoch mit "'module' object is not callable" kommentiert.
Wo liegt mein Fehler?
Er findet a nicht, weil a ein lokaler Name ist. Was du meinst ist "self.a". Dein "a = 1000" ist übrigens überflüssig und wahrscheinlich hier sogar falsch. Damit bindest du "a" nämlich an "testklasse" und nicht an Exemplare von "testklasse".
Dein zweites Problem: In deinem Modul "testklasse" liegt die Klasse "testklasse". Also benötigst du:
@Friedericus: Dein Fehler liegt, wie die Meldung schon sagt, dass Du versuchst das Modul aufzurufen. Du hast da ein Modul mit dem Namen `testklasse` in dem sich eine Klasse mit dem Namen `testklasse` befindet. Bei einem ``import testklasse`` bindest Du das Modul `testklasse` an eben diesen Namen. Du musst entweder auf das Klassenobjekt zugreifen oder Dir mit einem ``from``-Import explizit die Klasse in den Namensraum holen. Also ``t = testklasse.testklasse(5)`` oder ``from testklasse import testklasse``.
Bei den Methoden wirst Du dann aber Überraschungen erleben. `aendern()` ändert nicht wirklich etwas weil die Zuweisung an das lokale `a` nach aussen keinen Effekt hat, und bei `ausgeben()` wirst Du einen `NameError` bekommen, weil da lokal gar kein `a` definiert ist, welches man ausgeben könnte.
Die Namenkonvention für Klassen ist übrigens `MixedCase`, also `Testklasse` in diesem Fall. Dann könnte man Modul und Klasse auch einfacher auseinander halten.