@bremer: Alles, was man in der ersten Einrückungsebene bei einer Klassendefinition schreibt, gehört zur Klasse, das ist ein eigener Namensraum. self existiert da nicht. Da dieser Raum direkt evaluiert wird bei Antreffen einer Definition existiert er nur kurzzeitig, danach hat man eben die Klasse. Diese wird erst nach Auswertung erstellt, weswegen es dort auch kein "cls" Attribut gibt (was aber auch überflüssig wäre, schließlich gibts classmethod / staticmethod und ein explizites cls würde sich nicht so gut wie das self begründen lassen).
Das bedeutet auch, das man dort alles Notwendige tun kann, diese Klasse zu definieren. Zb auch sowas:
Code: Alles auswählen
import random
class A(object):
def _generate_std_value():
return random.randint(0, 101)
my_classvar = _generate_std_value()
del _generate_std_value
Diese Funktion wird in der Klasse nicht auftauchen. Über die Sinnhaftigkeit lässt sich natürlich streiten.
Außerdem ist deine ursprüngliche Herangehensweise etwas seltsam. Du willst der Klasse ein (klassen)globales Attribut zuweisen (das aber nur bei Klassenerstellung definiert wird), das aber mit der Instanz zu tun hat und bei jedem __init__ definiert wird? Das hat doch alles gar nichts miteinander zu tun.