Klassenmethoden

Einführung in objektorientierte Programmierung in Python

George Boorman

Curriculum Manager, DataCamp

Methoden

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def give_raise(self, amount):
        self.salary += amount


# Einzigartige Attributwerte emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Einzigartige Attributwerte emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Einführung in objektorientierte Programmierung in Python

Klassenmethoden

  • Klassenmethoden sind möglich
  • Müssen eng gefasst sein, da sie keine Objekt­daten nutzen können
class MyClass:
    # Mit Dekorator als Klassenmethode kennzeichnen
    @classmethod

# cls verweist auf die Klasse def my_awesome_method(cls, args...): # Hier etwas tun # Keine Instanzattribute erlaubt
# Klasse aufrufen, nicht das Objekt MyClass.my_awesome_method(args...)
  • Wie bei self ist cls Konvention; jedes Wort geht
Einführung in objektorientierte Programmierung in Python

Alternative Konstruktoren

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary

@classmethod def from_file(cls, filename): with open(filename, "r") as f: # Erste Zeile lesen name = f.readline().strip() # Zweite Zeile als Integer lesen salary = int(f.readline().strip())
return cls(name, salary)
  • Erlauben alternative Konstruktoren
  • Es gibt nur ein __init__()

 

  • Nutze Klassenmethoden, um Objekte zu erzeugen
  • Mit return ein Objekt zurückgeben
  • cls(...) ruft __init__(...) auf
Einführung in objektorientierte Programmierung in Python

Alternative Konstruktoren

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline().strip()
          salary = int(f.readline().strip())
      return cls(name, salary)  

Employee.txt

Textdatei mit dem Namen John Smith und Gehalt 40000

# Erzeuge ein Employee-Objekt ohne Employee() aufzurufen
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Einführung in objektorientierte Programmierung in Python

Wann Klassenmethoden verwenden

  • Alternative Konstruktoren

  • Methoden, die keine Instanzattribute brauchen

  • Auf eine einzige Instanz (Objekt) der Klasse beschränken

    • Datenbankverbindungen
    • Konfigurationseinstellungen
Einführung in objektorientierte Programmierung in Python

Lass uns üben!

Einführung in objektorientierte Programmierung in Python

Preparing Video For Download...