Klass- och instansattribut

Introduktion till objektorienterad programmering i Python

George Boorman

Curriculum Manager, DataCamp

Grundprinciper i OOP

Inkapsling:

  • Samling av data och metoder

Arv:

  • Utökar funktionaliteten hos befintlig kod

Polymorfism:

  • Skapar ett enhetligt gränssnitt
Introduktion till objektorienterad programmering i Python

Attribut på instansnivå

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

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • Värdena för name och salary är specifika för varje objekt
  • self tilldelar till ett objekt
Introduktion till objektorienterad programmering i Python

Attribut på klassnivå

  • Data som delas av alla instanser av en klass

 

  • Definiera klassattribut i class-kroppen

 

  • "Global variabel" inom klassen
Introduktion till objektorienterad programmering i Python

Implementera attribut på klassnivå

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 delas av alla instanser
  • Använd inte self för att definiera ett klassattribut
  • Konventionen är att använda versaler
  • Använd ClassName.ATTR_NAME för att komma åt klassattributets värde
Introduktion till objektorienterad programmering i Python

Attribut på klassnivå

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
Introduktion till objektorienterad programmering i Python

Ändra attribut på klassnivå

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
Introduktion till objektorienterad programmering i Python

Ändra attribut på klassnivå

  • MIN_SALARY definieras i klassdefinitionen

 

  • Att uppdatera MIN_SALARY på ett objekt påverkar inte värdet i klassdefinitionen

 

  • Säkerhet – förhindrar oönskade ändringar i koden!
Introduktion till objektorienterad programmering i Python

Varför använda klassattribut?

Globala konstanter kopplade till klassen

 

  • Minimi- och maximivärden för attribut
    • Förhindrar ogiltig data
  • Vanliga värden och konstanter, t.ex. host, port för en Database-klass
    • Undviker upprepning vid skapande av objekt
Introduktion till objektorienterad programmering i Python

Nu kör vi en övning!

Introduktion till objektorienterad programmering i Python

Preparing Video For Download...