Metody klasowe

Wprowadzenie do programowania obiektowego w Pythonie

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


# Unikalne wartości atrybutów emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Unikalne wartości atrybutów emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Wprowadzenie do programowania obiektowego w Pythonie

Metody klasowe

  • Możliwe jest definiowanie metod klasowych
  • Muszą mieć wąski zakres – nie mają dostępu do danych instancji
class MyClass:
    # Użyj dekoratora, aby zadeklarować metodę klasową
    @classmethod

# Argument cls odwołuje się do klasy def my_awesome_method(cls, args...): # Kod metody # Brak dostępu do atrybutów instancji
# Wywołaj na klasie, nie na obiekcie MyClass.my_awesome_method(args...)
  • Podobnie jak self, cls to konwencja – można użyć dowolnej nazwy
Wprowadzenie do programowania obiektowego w Pythonie

Alternatywne 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: # Odczytaj pierwszy wiersz name = f.readline().strip() # Odczytaj drugi wiersz jako liczbę całkowitą salary = int(f.readline().strip())
return cls(name, salary)
  • Umożliwiają tworzenie alternatywnych konstruktorów
  • Można mieć tylko jeden __init__()

 

  • Użyj metod klasowych do tworzenia obiektów
  • Użyj return, aby zwrócić obiekt
  • cls(...) wywoła __init__(...)
Wprowadzenie do programowania obiektowego w Pythonie

Alternatywne 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

Plik tekstowy zawierający imię John Smith i wynagrodzenie 40000

# Utwórz pracownika bez wywoływania Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Wprowadzenie do programowania obiektowego w Pythonie

Kiedy używać metod klasowych

  • Alternatywne konstruktory

  • Metody niewymagające atrybutów instancji

  • Ograniczenie do jednej instancji (obiektu) klasy

    • Połączenia z bazą danych
    • Ustawienia konfiguracyjne
Wprowadzenie do programowania obiektowego w Pythonie

Czas na ćwiczenia!

Wprowadzenie do programowania obiektowego w Pythonie

Preparing Video For Download...