Klassenaufbau: der __init__ Konstruktor

Objektorientierte Programmierung in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Methoden und Attribute

  • Methoden sind Funktionsdefinitionen innerhalb einer Klasse
  • self als erstes Argument
  • Attribute durch Zuweisung definieren
  • Auf Attribute in der Klasse über self.___ zugreifen

   

class MyClass:
    # Funktionsdefinition in der Klasse
    # erstes Argument ist self
    def my_method1(self, other_args...):
        # hier Dinge tun

    def my_method2(self, my_attr):        
        # Attribut durch Zuweisung erstellt
        self.my_attr = my_attr
        ...
Objektorientierte Programmierung in Python

Konstruktor

  • Daten beim Erstellen des Objekts hinzufügen?
  • Konstruktor __init__() Methode wird jedes Mal aufgerufen, wenn ein Objekt erstellt wird.
class Customer:
       def __init__(self, name):     
        self.name = name           # <--- Das .name Attribut erstellen und auf den name Parameter setzen
        print("Die __init__ Methode wurde aufgerufen")

cust = Customer("Lara de Silva") #<--- __init__ wird implizit aufgerufen print(cust.name)
Die __init__ Methode wurde aufgerufen
Lara de Silva
Objektorientierte Programmierung in Python
class Customer:
       def __init__(self, name, balance):  # <-- balance Parameter hinzugefügt

self.name = name self.balance = balance # <-- balance Attribut hinzugefügt print("Die __init__ Methode wurde aufgerufen")
cust = Customer("Lara de Silva", 1000) # <-- __init__ wird aufgerufen print(cust.name) print(cust.balance)
Die __init__ Methode wurde aufgerufen
Lara de Silva
1000
Objektorientierte Programmierung in Python
class Customer:
       def __init__(self, name, balance=0):  #<-- Standardwert für balance setzen

self.name = name self.balance = balance print("Die __init__ Methode wurde aufgerufen")
cust = Customer("Lara de Silva") # <-- balance nicht explizit angeben
print(cust.name) print(cust.balance) # <-- Attribut wird trotzdem erstellt
Die __init__ Methode wurde aufgerufen
Lara de Silva
0
Objektorientierte Programmierung in Python

Attribute in Methoden

class MyClass:
    def my_method1(self, attr1):
        self.attr1 = attr1
        ...

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 erstellt
obj.my_method2(val2) # <-- attr2 erstellt

Attribute im Konstruktor

class MyClass:
    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2
        ...

# Alle Attribute werden erstellt obj = MyClass(val1, val2)
  • einfacher, alle Attribute zu kennen
  • Attribute werden beim Erstellen des Objekts erstellt
  • besser wartbarer Code
Objektorientierte Programmierung in Python

Best Practices

1. Attribute in __init__() initialisieren
Objektorientierte Programmierung in Python

Best Practices

1. Attribute in __init__() initialisieren
2. Benennung

CamelCase für Klassen, lower_snake_case für Funktionen und Attribute

Objektorientierte Programmierung in Python

Best Practices

1. Attribute in __init__() initialisieren
2. Benennung

CamelCase für Klassen, lower_snake_case für Funktionen und Attribute

3. self als self belassen
class MyClass:
    # Funktioniert, ist aber nicht empfohlen
    def my_method(kitty, attr):
       kitty.attr = attr
Objektorientierte Programmierung in Python

Best Practices

1. Attribute in __init__() initialisieren
2. Benennung

CamelCase für Klassen, lower_snake_case für Funktionen und Attribute

3. self ist self
4. Docstrings verwenden
class MyClass:
    """Diese Klasse macht nichts"""
    pass
Objektorientierte Programmierung in Python

Lass uns üben!

Objektorientierte Programmierung in Python

Preparing Video For Download...