Middle
Köhnə və yeni siniflər (old-style və new-style) nədir və aralarındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Python 3-ə qədər, bütün siniflər köhnə üslubda idi. Python 2-də yeni siniflər object-dən miras alınaraq yaradılırdı.
Əsas fərqlər:
- Miras:
- Köhnə üslub: Klassik metoddan istifadə edir (Classic Method Resolution Order - CMRO).
- Yeni üslub: C3 (mirasağın qrafikinin xəttiləşdirilməsi).
- Deskriptorlar:
- Köhnə üslub: Deskriptorlardan istifadə etmir (o cümlədən
__slots__,property). - Yeni üslub: Tam dəstək verir deskriptorlara.
- Köhnə üslub: Deskriptorlardan istifadə etmir (o cümlədən
- Çoxlu miras üçün MRO:
- Köhnə üslub: Anlaşılmaz davranışlara səbəb ola bilər.
- Yeni üslub: Düzgün və proqnozlaşdırıla bilən ardıcıllıq təmin edir.
__class__və__dict__atributları:- Köhnə üslub: Davranış fərqlidir.
- Yeni üslub: Daha ardıcıl.
Python 2-də yeni sinif nümunəsi (göstəriş üçün):
# Yalnız Python 2
class NewStyleClass(object):
pass
class OldStyleClass:
pass
Python 3-də bütün siniflər standart olaraq yeni üslubdadır.
# Python 3
class AnyClass: # Avtomatik olaraq object-dən miras alır
pass