Sobes.tech
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.
  • Ç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____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