Atrybuty klasy a atrybuty instancji

Wprowadzenie do programowania obiektowego w Pythonie

George Boorman

Curriculum Manager, DataCamp

Podstawowe zasady OOP

Enkapsulacja:

  • Łączenie danych i metod

Dziedziczenie:

  • Rozszerzanie funkcjonalności istniejącego kodu

Polimorfizm:

  • Tworzenie jednolitego interfejsu
Wprowadzenie do programowania obiektowego w Pythonie

Atrybuty poziomu instancji

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

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • Wartości name i salary są specyficzne dla każdego obiektu
  • self przypisuje do obiektu
Wprowadzenie do programowania obiektowego w Pythonie

Atrybuty poziomu klasy

  • Dane współdzielone przez wszystkie instancje klasy

 

  • Atrybuty klasy definiuje się w ciele class

 

  • „Zmienna globalna" w obrębie klasy
Wprowadzenie do programowania obiektowego w Pythonie

Implementowanie atrybutów klasy

class Employee:
    # Define a class attribute
    # No self. syntax
    MIN_SALARY = 30000 

def __init__(self, name, salary): self.name = name # Use class name # to access class attribute if salary >= Employee.MIN_SALARY: self.salary = salary
else: self.salary = Employee.MIN_SALARY
  • MIN_SALARY jest współdzielony przez wszystkie instancje
  • Nie używaj self do definiowania atrybutu klasy
  • Konwencja: nazwy pisane wielkimi literami
  • Użyj ClassName.ATTR_NAME, aby uzyskać dostęp do atrybutu klasy
Wprowadzenie do programowania obiektowego w Pythonie

Atrybuty poziomu klasy

class Employee:
    # Define a class attribute
    MIN_SALARY = 30000    

def __init__(self, name, salary): self.name = name # Use class name # to access class attribute if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("John", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("Jane", 60000)
print(emp2.MIN_SALARY)
30000
Wprowadzenie do programowania obiektowego w Pythonie

Modyfikowanie atrybutów klasy

emp1 = Employee("John", 40000)
emp2 = Employee("Jane", 60000)

# Update MIN_SALARY of emp1 emp1.MIN_SALARY = 50000
# Print MIN_SALARY for both employees print(emp1.MIN_SALARY) print(emp2.MIN_SALARY)
50000
30000
Wprowadzenie do programowania obiektowego w Pythonie

Modyfikowanie atrybutów klasy

  • MIN_SALARY jest zdefiniowany w ciele klasy

 

  • Zmiana MIN_SALARY obiektu nie wpływa na wartość w definicji klasy

 

  • Bezpieczeństwo — zapobiega modyfikacjom oprogramowania!
Wprowadzenie do programowania obiektowego w Pythonie

Po co używać atrybutów klasy?

Globalne stałe powiązane z klasą

 

  • Wartości minimalne i maksymalne atrybutów
    • Zapobiegają nieprawidłowym danym
  • Często używane wartości i stałe, np. host, port dla klasy Database
    • Unikają powtórzeń przy tworzeniu obiektów
Wprowadzenie do programowania obiektowego w Pythonie

Czas na ćwiczenia!

Wprowadzenie do programowania obiektowego w Pythonie

Preparing Video For Download...