Klassens anatomi: attribut och metoder

Objektorienterad programmering i Python

Alex Yarosh

Content Quality Analyst @ DataCamp

En grundläggande klass

class Customer:

# code for class goes here
pass
  • class <name>: startar en klassdefinition
  • koden inuti class är indragen
  • använd pass för att skapa en "tom" klass
c1 = Customer()
c2 = Customer()
  • använd ClassName() för att skapa ett objekt av klassen ClassName
Objektorienterad programmering i Python

Lägg till metoder i en klass

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • metoddefinition = funktionsdefinition inuti en klass
  • använd self som första argument i metoddefinitionen
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • utelämna self när du anropar en metod på ett objekt
Objektorienterad programmering i Python
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

Vad är self?

  • klasser är mallar – hur refererar man till data för ett specifikt objekt?
  • self är en platshållare för ett specifikt objekt i klassdefinitionen
  • ska vara det första argumentet i varje metod
  • Python hanterar self automatiskt när en metod anropas från ett objekt:

cust.identify("Laura") tolkas som Customer.identify(cust, "Laura")

Objektorienterad programmering i Python

Vi behöver attribut

  • Inkapsling: att samla data och metoder som arbetar på datan
  • T.ex. bör Customers namn vara ett attribut

  $$\text{\Large{Attribut skapas med tilldelning (=) i metoder}}$$

Objektorienterad programmering i Python

Lägg till ett attribut i en klass

class Customer:  
    # set the name attribute of an object to new_name
    def set_name(self, new_name):

# Create an attribute by assigning a value self.name = new_name # <-- will create .name when set_name is called
cust = Customer()                   # <--.name doesn't exist here yet

cust.set_name("Lara de Silva") # <--.name is created and set to "Lara de Silva"
print(cust.name) # <--.name can be used
Lara de Silva
Objektorienterad programmering i Python

Gammal version

class Customer:  



    # Using a parameter
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

Ny version

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Using .name from the object it*self*
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Objektorienterad programmering i Python

Nu kör vi en övning!

Objektorienterad programmering i Python

Preparing Video For Download...