Conținut curs
Gestionarea erorilor și excepțiilor
0/1
Python Intermediar
Despre lecție

Introducere

În această lecție, ne vom concentra pe metodele de clasă și metodele statice în limbajul de programare Python, înțelegând diferențele dintre ele, când să le folosim și cum să le implementăm în codul nostru. Aceste metode sunt importante pentru a înțelege conceptele avansate de programare orientată pe obiecte și pentru a dezvolta o bază solidă în lucrul cu clasele.

Cuprins

  1. Recapitulare a metodelor de instanță
  2. Metodele de clasă
  3. Metodele statice
  4. Compararea metodelor de clasă, metodelor de instanță și metodelor statice
  5. Exemple și scenarii de utilizare
  6. Încheiere și concluzii

1. Recapitulare a metodelor de instanță

Înainte de a discuta despre metodele de clasă și metodele statice, să revedem rapid metodele de instanță. Metodele de instanță sunt cele mai comune metode în Python și sunt asociate cu o instanță a clasei. Ele pot accesa atributele de instanță și atributele de clasă prin intermediul argumentului self.

python
class MyClass:
    class_attribute = "This is a class attribute"

    def __init__(self, instance_attribute):
        self.instance_attribute = instance_attribute

    def instance_method(self):
        print("This is an instance method")
        print("Instance attribute:", self.instance_attribute)
        print("Class attribute:", self.class_attribute)

my_instance = MyClass("This is an instance attribute")
my_instance.instance_method()

2. Metodele de clasă

Metodele de clasă sunt asociate cu clasa în sine și nu cu o instanță a clasei. Acestea sunt marcate cu decoratorul @classmethod și au acces la atributele de clasă prin intermediul argumentului cls, care reprezintă clasa. Metodele de clasă nu pot accesa direct atributele de instanță.

python
class MyClass:
    class_attribute = "This is a class attribute"

    @classmethod
    def class_method(cls):
        print("This is a class method")
        print("Class attribute:", cls.class_attribute)

MyClass.class_method()

3. Metodele statice

Metodele statice sunt funcții obișnuite care aparțin unei clase, dar nu au acces la atributele de instanță sau de clasă. Ele sunt marcate cu decoratorul @staticmethod și sunt folosite în general pentru a implementa funcționalități care nu depind de starea instanței sau a clasei.

python
class MyClass:
    @staticmethod
    def static_method():
        print("This is a static method")

MyClass.static_method()

4. Compararea metodelor de clasă, metodelor de instanță și metodelor statice

Aspect Metode de instanță Metode de clasă Metode statice
Acces la instanță Da (prin self) Nu Nu
Acces la clasă Da (prin self) Da (prin cls) Nu
Decorator @classmethod @staticmethod
Scop Acțiuni pe instanță Acțiuni pe clasă Funcții independente

5. Exemple și scenarii de utilizare

5.1. Metode de clasă

Metodele de clasă sunt utile atunci când vrem să implementăm funcționalități care lucrează cu atributele de clasă sau cu alte metode de clasă.

python
class Car:
    _cars_created = 0

    def __init__(self, make, model):
        self.make = make
        self.model = model
        Car._cars_created += 1

    @classmethod
    def cars_created(cls):
        print(f"{cls._cars_created} cars have been created")

car1 = Car("Toyota", "Camry")
car2 = Car("Honda", "Civic")
Car.cars_created()

#### 5.2. Metode statice

Metodele statice sunt utile atunci când vrem să implementăm funcționalități care nu depind de instanța sau de clasa în sine, dar sunt relevante pentru domeniul problemei.

```python
class MathHelper:
    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def subtract(a, b):
        return a - b

print(MathHelper.add(3, 4))
print(MathHelper.subtract(10, 5))

6. Încheiere și concluzii

În această lecție, am discutat despre metodele de clasă și metodele statice în Python, care sunt esențiale pentru a înțelege conceptele de programare orientată pe obiecte. Am învățat că:

  • Metodele de clasă sunt asociate cu clasa și au acces la atributele de clasă prin argumentul cls.
  • Metodele statice sunt funcții obișnuite care aparțin unei clase, dar nu au acces la atributele de instanță sau de clasă.
  • Metodele de clasă și metodele statice au scopuri și utilizări diferite în codul nostru.

Înțelegerea acestor metode este importantă pentru a dezvolta o bază solidă în lucrul cu clasele și pentru a scrie cod modular și eficient în Python.