# Kā izveidot Python klases un objektus

Python klases ir kā **būvniecības plāni vai veidnes**. Jūs varat izmantot tās, lai rakstītu atkārtoti izmantojamu kodu klases atribūtu un metožu veidā.

## Kas ir Python klases?

Klase ir **abstrakts jēdziens**, kas apraksta objektu atribūtus un metodes. Python klase darbojas kā veidne konkrētu objektu radīšanai, kas ir klases instancēm. Piemēram, `Car`. klase var definēt atribūtus, piemēram, krāsu un zīmolu, kopā ar metodēm, piemēram, `__drive__` vai `__brake__`.

Lai gan katram klases objektam var būt unikālas atribūtu vērtības, vienas klases **objekti dala metodes un pamata uzvedības struktūru ar citiem** klases **eksemplāriem**. Piemēram, klases `Car` objekts `my_car` var tikt izveidots ar krāsu `__red__` un zīmolu `__Toyota__`, bet metodes `__drive__` un `__brake__` automātiski tiks pārnestas uz eksemplāru.

## Kā izveidot Python klases

Python valodā klases definē, izmantojot atslēgvārdu `class`.

```python
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}"
```

Iepriekš minētais kods definē klasi ar nosaukumu `MyClass`. Tai ir **konstruktors** `__init__`, kas tiek izsaukta pēc objekta izveides, inicializējot divus atribūtus: `attribute1` un `attribute2`. Metode `my_method` atgriež formatētu virkni, kas satur šo atribūtu vērtības.

Lai izveidotu objektu no šīs klases, izmantojiet klases nosaukumu, aiz kura ir iekavās:

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

## Python klašu izmantošanas piemēri

Python klases var izveidot sarežģītas sistēmas un attiecības starp dažādām vienībām. Turpmākajās sadaļās mēs parādīsim, kā strādāt ar Python klasēm.

### `__str()__` funkcija

Python valodas funkcija `__str__()` ir īpaša metode, ko var definēt Python klasēs. Kad tā tiek īstenota, tā atgriež virkni, kas attēlo **objektu lietotājam draudzīgā veidā**. Funkciju `str()` var izmantot tieši objektā vai kombinēt ar `print()` izteikumu.

```python
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
```

Iepriekšējā kodā `__str__()` metode `Person` klasē izveido **formatētu virkni**, kas parāda personas vārdu un vecumu. Kad tiek izpildīts `print(person1)`, tas automātiski izsauc `__str__()` metodi `person1` objektā un izvada virkni, ko atgriež metode.

### Metožu definēšana Python klasēs

Python valodā var definēt **metodes klasē**, lai veiktu darbības ar klases objektiem. Šīs metodes var izsaukt izveidotie objekti.

```python
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 piemērā mēs definējam klasi `Rectangle` ar divām metodēm `area()` un `perimeter()`, kas aprēķina taisnstūra laukumu un perimetru, izmantojot garumu un platumu, kas norādīts objekta inicializācijas laikā. Python valodā `self` klases metodē darbojas kā **atsauce uz objektu**, uz kuru metode tiek pašlaik piemērota.

Objekts `my_rectangle` tiek izveidots ar garumu 5 un platumu 10. Tad mēs izsaucam metodes `area()` un `perimeter()` šim objektam, lai aprēķinātu atbilstošās vērtības.

### Objektu īpašību maiņa

`.` punktu operatoru var izmantot, lai piekļūtu **objekta konkrētiem atribūtiem** un atjauninātu to vērtības. Jaunas vērtības var piešķirt tieši atribūtam.

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

Atslēgvārds `del` tiek izmantots, lai dzēstu objekta īpašības.

```python
del person1.name
```

Note Atcerieties, ka instancu mainīgie atšķiras no [Python klases mainīgajiem](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-klases-mainigie/). Klases mainīgie tiek definēti **ārpus konstruktora** un tos var mainīt, tikai izmantojot klases nosaukumu.


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-klases/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-klases/) for AI/LLM consumption.