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.
@PyJava: *Der* Fehler ist gut. Vielleicht verrätst auch was das machen soll, denn da sieht einiges falsch aus. Die ``if __name__ …``-Abfrage gehört beispielswiese nicht in die Klasse sondern auf Modulebene und ruft von dort üblicherweise eine `main()`-*Funktion* auf. Und dann müsstest Du auch erst einmal ein Exemplar vom Typ `programm` erstellen bevor Du Methoden darauf aufrufst. Ausserdem musst Du immer das Objekt angeben auf dem eine Methode aufgerufen wird. Der ``drucken()``-Aufruf in der `main()`-Methode sucht erst lokal in der Methode und dann auf Modulebene nach dem Namen `drucken` und wird den dort nicht finden. Weil Du Java in Deinem Nutzernamen hast: `self` wird da nicht auf magische Weise angenommen wie `this` bei Java. Es wird als Argument in die Methode rein gebracht und man muss darüber gehen um an Attribute von dem Objekt zu kommen auf dem die Methode aufgerufen wurde.
class Program(object):
def __init__(self):
self.x = 5
def print(self):
print(self.x)
def main():
Program().print()
if __name__ == '__main__':
main()
Wobei die Klasse hier keinen Sinn macht. Klassen mit nur `__init__()` und nur einer zusätzlichen Methode, von denen man nur ein Exemplar erstellt um diese eine Methode drauf aufzurufen und das Exemplar dann gleich wieder verwirft sind oft ein Zeichen das man eine einfache Funktion unnötigerweise in eine Klasse gesteckt hat.