# Kako ustvariti razrede in objekte v Pythonu

Razredi v Pythonu so podobni **gradbenim načrtom ali predlogam**. Uporabite jih lahko za pisanje ponovno uporabne kode v obliki atributov in metod razreda.

## Kaj so razredi v Pythonu?

Razred je **abstrakten pojem**, ki opisuje lastnosti in metode objektov. Razred v Pythonu deluje kot predloga za ustvarjanje konkretnih objektov, ki so primeri razreda. Na primer, razred `Car` lahko definira lastnosti, kot sta barva in znamka, skupaj z metodami, kot sta `__drive__` ali `__brake__`.

Medtem ko ima lahko vsak objekt razreda edinstvene vrednosti atributov, objekti istega razreda **delijo metode in osnovni okvir vedenja z drugimi primerki** v razredu. Na primer, objekt `my_car` razreda `Car` se lahko ustvari z barvo `__red__` in blagovno znamko `__Toyota__`, vendar se metode `__drive__` in `__brake__` samodejno prenesejo na primer.

## Kako ustvariti razrede Python

V Pythonu razrede opredeljujete s ključno besedo `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}"
```

Zgornja koda definira razred z imenom `MyClass`. Ima **konstruktor** `__init__`, ki se pokliče ob ustvarjanju objekta in inicializira dva atributa: `attribute1` in `attribute2`. Metoda `my_method` vrne oblikovan niz, ki vsebuje vrednosti teh atributov.

Če želite izpeljati objekt iz te razreda, uporabite ime razreda, ki mu sledijo oklepaji:

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

## Primeri uporabe razredov Python

Pythonove razrede lahko uporabite za ustvarjanje kompleksnih sistemov in odnosov med različnimi entitetami. V naslednjih poglavjih vam bomo pokazali, kako delati s Pythonovimi razredi.

### `__str()__` funkcija

Funkcija `__str__()` v Pythonu je posebna metoda, ki jo lahko opredelite znotraj razredov Python. Ko je implementirana, vrne niz, ki predstavlja **uporabniku prijazen prikaz objekta**. Funkcijo `str()` lahko uporabite neposredno na objektu ali jo kombinirate z izjavo `print()`.

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

V zgornjem kodu metoda `__str__()` v razredu `Person` ustvari **oblikovan niz**, ki prikazuje ime in starost osebe. Ko se izvede `print(person1)`, samodejno pokliče metodo `__str__()` objekta `person1` in izpiše niz, ki ga vrne metoda.

### Opredeljevanje metod v razredih Python

V Pythonu lahko **v razredu** opredelite **metode** za izvajanje operacij na objektih razreda. Te metode lahko nato pokličejo ustvarjeni 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
```

V primeru Python opredelimo razred `Rectangle` z dvema metodama `area()` in `perimeter()`, ki izračunata površino in obseg pravokotnika na podlagi dolžine in širine, navedenih med inicializacijo objekta. V Pythonu `self` v metodi razreda deluje kot **sklic na objekt**, na katerega se metoda trenutno uporablja.

Objekt `my_rectangle` je ustvarjen z dolžino 5 in širino 10. Nato pokličemo metode `area()` in `perimeter()` na tem objektu, da izračunamo ustrezne vrednosti.

### Spreminjanje lastnosti objektov

Operator `.` dot se lahko uporabi za dostop **do določenih atributov objekta** in posodobitev njihovih vrednosti. Nove vrednosti lahko dodelite neposredno atributu.

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

Ključna beseda `del` se uporablja za brisanje lastnosti objekta.

```python
del person1.name
```

Note Ne pozabite, da se spremenljivke instance razlikujejo od [spremenljivk razreda Python](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/spremenljivke-razreda-python/). Spremenljivke razreda so definirane **zunaj konstruktorja** in jih je mogoče spremeniti samo z uporabo imena razreda.


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-classes/](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-classes/) for AI/LLM consumption.