Klassenaufbau: der __init__-Konstruktor

Einführung in objektorientierte Programmierung in Python

George Boorman

Curriculum Manager, DataCamp

Methoden und Attribute

  • Methoden sind Funktionsdefinitionen in einer Klasse
  • self als erstes Argument
  • Attribute per Zuweisung definieren
  • In der Klasse per self.___ auf Attribute verweisen
  • Viele Methodenaufrufe können unübersichtlich werden!
class MyClass:
    # Funktionsdefinition in der Klasse
    # erstes Argument ist self
    def my_method1(self, other_args...):
        # hier passiert etwas

def my_method2(self, my_attr): # Attribut wird durch Zuweisung erstellt self.my_attr = my_attr ...
Einführung in objektorientierte Programmierung in Python

Konstruktor

  • Beim Erstellen Daten ins Objekt geben
  • Der Konstruktor __init__() wird bei jeder Objekterstellung aufgerufen
    • Automatisch dank __methodname__-Syntax
class Customer:
    def __init__(self, name):
        # .name-Attribut erstellen und mit Parameter name setzen
        self.name = name
        print("The __init__ method was called")
Einführung in objektorientierte Programmierung in Python

Konstruktor

# __init__ wird implizit aufgerufen 
cust = Customer("Lara de Silva")   
print(cust.name)
The __init__ method was called
Lara de Silva
Einführung in 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() # attr1 erstellt obj.my_method1(val1) # attr2 erstellt obj.my_method2(val2)

Attribute im Konstruktor

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

# Alle Attribute werden erstellt obj = MyClass(val1, val2)
  • Im Allgemeinen den Konstruktor verwenden
  • Attribute werden beim Erstellen des Objekts angelegt
  • Besser nutzbarer und wartbarer Code
Einführung in objektorientierte Programmierung in Python

Argumente hinzufügen

class Customer:
    # balance-Argument hinzufügen
    def __init__(self, name, balance): 

self.name = name # balance-Attribut hinzufügen self.balance = balance print("The __init__ method was called")
Einführung in objektorientierte Programmierung in Python

Parameter hinzufügen

# __init__ wird aufgerufen
cust = Customer("Lara de Silva", 1000)
print(cust.name)
print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Einführung in objektorientierte Programmierung in Python

Standardargumente

class Customer:
    # Standardwert für balance setzen
    def __init__(self, name, balance=0):
        self.name = name
        # Neues Attribut zuweisen
        self.balance = balance
        print("The __init__ method was called")
Einführung in objektorientierte Programmierung in Python

Standardargumente

# balance nicht explizit angeben
cust = Customer("Lara de Silva")

print(cust.name) # Das balance-Attribut wird trotzdem erstellt print(cust.balance)
The __init__ method was called
Lara de Silva
0
Einführung in objektorientierte Programmierung in Python

Best Practices

1. Attribute in __init__() initialisieren
Einführung in 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

Einführung in 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 beibehalten
class MyClass:
    # Funktioniert, ist aber nicht empfohlen
    def my_method(george, attr):
        george.attr = attr
Einführung in 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
Einführung in objektorientierte Programmierung in Python

Lass uns üben!

Einführung in objektorientierte Programmierung in Python

Preparing Video For Download...