Python-klasser er som byg­ge­pla­ner eller ska­be­lo­ner. Du kan bruge dem til at skrive gen­an­ven­de­lig kode i form af klas­se­at­tri­but­ter og metoder.

Hvad er Python-klasser?

En klasse er et abstrakt begreb, der beskriver at­tri­but­ter og metoder for objekter. En Python-klasse fungerer som en skabelon til op­ret­tel­se af konkrete objekter, som er instanser af klassen. For eksempel kan Car definere at­tri­but­ter som farve og mærke sammen med metoder som __drive__ eller __brake__.

Mens hvert objekt i en klasse kan have unikke at­tri­but­vær­di­er, deler objekter i samme klasse metoder og grund­læg­gen­de ad­færds­ram­mer med andre instanser i klassen. For eksempel kan objektet my_car i klassen Car oprettes med farven __red__ og mærket __Toyota__, men metoderne __drive__ og __brake__ overføres au­to­ma­tisk til instansen.

Sådan oprettes Python-klasser

I Python definerer du klasser ved hjælp af nøg­le­or­det class.

class MyClass:
    # Constructor method called when creating an object
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2
    
    # Method defined within the class
    def my_method(self):
        return f"Attribute 1: {self.attribute1}, Attribute 2: {self.attribute2}"
python

Oven­stå­en­de kode definerer en klasse ved navn MyClass. Den har en kon­struk­tør __init__, som kaldes ved op­ret­tel­se af objektet og ini­ti­a­li­se­rer to at­tri­but­ter: attribute1 og attribute2. Metoden my_method re­tur­ne­rer en for­ma­te­ret streng, der in­de­hol­der værdierne for disse at­tri­but­ter.

For at udlede et objekt fra denne klasse skal du bruge klassens navn ef­ter­fulgt af pa­ren­te­ser:

object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()
python

Eksempler på, hvordan man bruger Python-klasser

Python-klasser kan skabe komplekse systemer og re­la­tio­ner mellem for­skel­li­ge enheder. I de følgende afsnit viser vi dig, hvordan du arbejder med Python-klasser.

__str()__ funktion

Funk­tio­nen __str__() i Python er en speciel metode, som du kan definere inden for Python-klasser. Når den im­ple­men­te­res, re­tur­ne­rer den en streng, der re­præ­sen­te­rer en bru­ger­ven­lig re­præ­sen­ta­tion af et objekt. Du kan bruge funk­tio­nen str() direkte på et objekt eller kombinere den med en print().

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"
person1 = Person("Alice", 30)
print(person1) # Output: Name: Alice, Age: 30
python

I oven­stå­en­de kode opretter metoden __str__() i klassen Person en for­ma­te­ret streng, der viser en persons navn og alder. Når print(person1) udføres, kaldes metoden __str__() i objektet person1 au­to­ma­tisk, og den streng, der re­tur­ne­res af metoden, udskrives.

De­fi­ni­tion af metoder i Python-klasser

I Python kan du definere metoder inden for en klasse til at udføre ope­ra­tio­ner på klassens objekter. Disse metoder kan derefter kaldes af de objekter, der oprettes.

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    
    def area(self):
        return self.length * self.width
    def perimeter(self):
        return 2 * (self.length + self.width)
# Creating an object of the class
my_rectangle = Rectangle(5, 10)
# Calling methods of the object
area = my_rectangle.area()
perimeter = my_rectangle.perimeter()
# Printing the calculated values
print("Area =", area) # Output: Area = 50
print("Perimeter =", perimeter) # Output: Perimeter = 30
python

I Python-eksemplet definerer vi klassen Rectangle med to metoder area() og perimeter(), som beregner rek­tang­lets areal og omkreds ved hjælp af længden og bredden, der angives under ob­jek­ti­ni­ti­a­li­se­rin­gen. I Python fungerer self i en klas­se­me­to­de som en reference til det objekt, som metoden aktuelt anvendes på.

Objektet my_rectangle oprettes med en længde på 5 og en bredde på 10. Derefter kalder vi metoderne area() og perimeter() på dette objekt for at beregne de til­sva­ren­de værdier.

Ændring af objekters egen­ska­ber

. kan bruges til at få adgang til objektets spe­ci­fik­ke at­tri­but­ter og opdatere deres værdier. Du kan tildele nye værdier direkte til at­tri­but­ten.

person1.name = "Sarah"
person1.age = 35
python

Nøg­le­or­det del bruges til at slette egen­ska­ber­ne for et objekt.

del person1.name
python
Note

Husk, at in­stansva­ri­ab­ler adskiller sig fra Python-klas­se­va­ri­ab­ler. Klas­se­va­ri­ab­ler defineres uden for kon­struk­tø­ren og kan kun ændres ved hjælp af klassens navn.

Gå til ho­ved­me­nu­en