Třídní metody

Úvod do objektově orientovaného programování v Pythonu

George Boorman

Curriculum Manager, DataCamp

Metody

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

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


# Jedinečné hodnoty atributů emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Jedinečné hodnoty atributů emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Úvod do objektově orientovaného programování v Pythonu

Třídní metody

  • Je možné definovat třídní metody
  • Musí mít omezený rozsah, protože nemohou pracovat s daty objektu
class MyClass:
    # Dekorátor pro deklaraci třídní metody
    @classmethod

# Argument cls odkazuje na třídu def my_awesome_method(cls, args...): # Zde proveďte operace # Atributy instance nelze použít
# Volání třídy, nikoli objektu MyClass.my_awesome_method(args...)
  • Stejně jako self, cls je konvence – lze použít libovolné slovo
Úvod do objektově orientovaného programování v Pythonu

Alternativní konstruktory

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: # Přečtení prvního řádku name = f.readline().strip() # Přečtení druhého řádku jako celé číslo salary = int(f.readline().strip())
return cls(name, salary)
  • Umožňují alternativní konstruktory
  • Lze definovat pouze jeden __init__()

 

  • Třídní metody slouží k vytváření objektů
  • Pomocí return se vrátí objekt
  • cls(...) volá __init__(...)
Úvod do objektově orientovaného programování v Pythonu

Alternativní konstruktory

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

Textový soubor obsahující jméno John Smith a plat 40000

# Vytvoření zaměstnance bez volání Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Úvod do objektově orientovaného programování v Pythonu

Kdy používat třídní metody

  • Alternativní konstruktory

  • Metody nevyžadující atributy instance

  • Omezení na jedinou instanci (objekt) třídy

    • Databázová připojení
    • Konfigurační nastavení
Úvod do objektově orientovaného programování v Pythonu

Pojďme procvičovat!

Úvod do objektově orientovaného programování v Pythonu

Preparing Video For Download...