# Kā izveidot un izmantot Python klases mainīgos

Python klases mainīgie ir strukturēts veids, kā dalīties ar datiem starp dažādām klases instancēm. Ja veicat **izmaiņas klases mainīgajā**, tas ietekmē visas klases instancēm. Tas nozīmē, ka jums nav jāpārdefinē tās katru reizi, kad tās tiek instanciētas.

## Kas ir Python klases mainīgie?

Python valodā mēs izveidojam klases mainīgos klases ietvaros. Atšķirībā no instancēm, kas ir specifiskas katrai klases instancēm, **klases mainīgie saglabā vienādu vērtību visām instancēm**. Klases mainīgie parasti tiek iestatīti pirms konstruktora un tiem var piekļūt jebkura klases instance.

Python klases mainīgie ir noderīgi, lai uzglabātu **datus**, kas attiecas uz visām klases instancēm, piemēram, konfigurācijas iestatījumus, noklusējuma vērtības vai kopīgus stāvokļus visā klases hierarhijā. Klases mainīgie ļauj arī definēt klases metodes vai atribūtus, kuriem var piekļūt katra instance, uzlabojot gan koda funkcionalitāti, gan struktūru.

## Kāda ir Python klases mainīgo sintakse?

Python klases mainīgie tiek izveidoti **klases definīcijā** un ārpus metodēm.

```python
class Car:
    total_cars = 0  # Class variable to track the total number of cars
    def __init__(self, brand, model):
        self.brand = brand  # Instance variable for the car brand
        self.model = model  # Instance variable for the car model
        Car.total_cars += 1  # Increment the total number of cars upon each instantiation
    def display_details(self):
        print(f"Brand: {self.brand}, Model: {self.model}")
# Creating instances of Car
car1 = Car("BMW", "X3")
car2 = Car("Audi", "A4")
# Accessing class variable and instance variables
print(f"Total number of cars: {Car.total_cars}")  # Output: 2
car1.display_details()  # Output: Brand: BMW, Model: X3
car2.display_details()  # Output: Brand: Audi, Model: A4
```

`Car` klasē mēs definējam klases mainīgo `total_cars`, lai uzskaitītu kopējo automašīnu skaitu. Konstruktors `__init__` tiek izsaukta, kad tiek izveidota jauna klases instance. Katrā instancēšanas reizē tiek iestatīti **instancēšanas mainīgie** `brand` un `model`, un klases mainīgais `total_cars` tiek palielināts par 1.

Izsaucot metodi `display_details()`, varam parādīt attiecīgo automašīnu instancu informāciju. **F-stringā**, Python string formāta metodē, varam piekļūt klases mainīgajam `total_cars`, lai parādītu kopējo izveidoto automašīnu skaitu.

## Python klases mainīgo izmantošanas piemēri

Piekļuve, modificēšana un pārmantošana ir ļoti svarīgi, lai Python droši strādātu ar klases mainīgajiem.

### Piekļuve klases mainīgajiem

Python klases mainīgie ir pieejami, **izmantojot klases nosaukumu vai instanci**, kam seko punkts un mainīgā nosaukums.

```python
class MyClass:
    class_var = "This is a class variable."
# Using a class name to access a class variable
print(MyClass.class_var)  # Output: This is a class variable.
# Using an instance to access a class variable
obj = MyClass()
print(obj.class_var)  # Output: This is a class variable.
```

Python valodā var piekļūt klases mainīgajiem dažādās vietās:

- **Konstruktorā**: klases mainīgo konstruktorā var izsaukt, izmantojot vai nu atslēgvārdu `self`, vai klases nosaukumu.
- **Instance metodēs**: Jūs varat izsaukt klases mainīgo instance metodēs, izmantojot vai nu `self` atslēgvārdu, vai klases nosaukumu.
- **Ārpus klases**: Jūs varat piekļūt klases mainīgajam ārpus klases, izmantojot objekta atsauci vai klases nosaukumu.

### Klases mainīgo mainīšana

Python klases mainīgos var mainīt tieši, izmantojot klases nosaukumu. Tomēr, ja instancē mainīgajam ir tāds pats nosaukums kā klases mainīgajam un jūs mēģināt mainīt mainīgo, izmantojot instanci, **tiks izveidots jauns instancē mainīgais**, bet klases mainīgais paliks nemainīgs.

```python
class MyClass:
    class_var = "Original class variable"
obj = MyClass()
print(obj.class_var)  # Output: Original class variable
MyClass.class_var = "Modified class variable"
print(obj.class_var)  # Output: Modified class variable
```

Šajā piemērā mēs pārrakstījām klases mainīgo `class_var`, piešķirot tam jaunu vērtību, izmantojot klasi `MyClass`. Izmaiņas tiek automātiski pārņemtas `obj` instancē.

### Klases mainīgie un pārmantošana

Pārmantošana ļauj atvasinātajām klasēm **piekļūt** un izmantot bāzes klases klases mainīgos, tos no jauna nedefinējot.

```python
class BaseClass:
    base_var = "Base variable"
class DerivedClass(BaseClass):
    pass
print(DerivedClass.base_var)  # Output: Base variable
```

Šeit mēs definējam bāzes klasi `BaseClass`, kas satur klases mainīgo `base_var`. Atvasinātā klase `DerivedClass` pārmanto no `BaseClass`. Pārmantošanas ceļā `DerivedClass` var piekļūt bāzes klases klases mainīgajam `base_var` un to izmantot, to no jauna nedefinējot.


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