ich habe angefangen mich mit Klassen zu beschäftigen und habe eine Frage zu Attributen und Methoden.
Bisher mache ich es so, dass ich einen Teil der Attribute über den Klassenaufruf übergebe (attribut 1 und attribut2), sowie einfache Berechnungen von neuen Attributen (insbesondere solche die sich im Programmablauf nicht ändern) ebenfalss in __init__ erzeuge.
In den Methoden werden bei mir ebenfalls Attribute erzeugt (z.B. attribut4). Dies sind üblicherweise Attribute, die sich im Programmverlauf auch ändern. Teilweise muss ich diese Attrbute dann allerdings in den Methoden neu erstellen und mit einem Wert vorbelegen (z.B. self.zaehler = 0, self.liste = []). Sollte man diese nicht auch in __init__m zuerst initialisieren. Nachteil wäre, dass __init__ dann ziemlich aufgebläht wäre.
Gibt es generelle Kommentare zu meiner Vorgehensweise.
Vielen Dank und Gruesse
Code: Alles auswählen
class Klasse1():
def __init__(self, v1, v2):
self.attribut1 = v1
self.attribut2 = v2
self.attribut3 = self.attribut1 * self.attribut2
def m1(self):
"""macht irgendetwas und erzeugt ein neues Attribut der Klasse1"""
self.attribut4 = [(self.attribut1 + i*i) for i in range(self.attribut2)]
def print_attribute(self):
for attr in self.__dict__:
print(attr, getattr(self, attr))
k = Klasse1(10,20)
k.m1()
k.print_attribute()