כל הטיפוסים ב Python הם אובייקטים !

 

ה – data model של Python מבלבל לפעמים מתכנתים הבאים משפות אחרות.
המשפט הראשון אומר:

Objects are Python’s abstraction for data
All data in a Python program is represented by objects or by relations between objects

ולא מרחיב דבר על כך – או לפחות לא באופן ברור. האם גם מספרים פשוטים הם אובייקטים ?

primitive types/reference types

בשפת Java קיימים טיפוסים "פרימיטיביים", המוגדרים בשפה עצמה.
ב C אלו המשתנים הרגילים.
משתנה המוגדר באמצעות טיפוס כזה "מכיל" את הערך בתוכו. נשים לב למשפט הבא מתוך tutorial באתר Oracle:
Primitive values do not share state with other primitive values
במילה state מתכוונים לערך המוכל במשתנה עצמו.
במקרה כזה – אם נאכסן במשתנה ערך (למשל המספר 5), אפשר יהיה אחר כך לאכסן שם ערך אחר.
לא כך המצב ב Python, שבה הטיפוס int הוא immutable (לא ניתן לשינוי).

ב Python אין טיפוסים פרימטיביים !!!
כל המידע ב Python מורכב מאובייקטים.

פרק data model של הגדרת השפה אומר:

Every object has an identity, a type and a value.
An object’s identity never changes once it has been created.
…the id() function returns an integer representing its identity.

נדגים זאת:

הסבר:
השם a הוא שם שמוצמד לאובייקט מסוג int שאינו ניתן לשינוי.
השם b מוצמד לאותו האובייקט.
הפלטים של הפונקציה id() הם זיהוי האובייקטים ב Python.

מה יקרה אם נבצע השמה נוספת ?

השמה של אובייקט immutable מייצרת אובייקט חדש עם הערך 5.
השם a מוצמד לאובייקט החדש (שלו id חדש).
השם b נשאר משוייך לאובייקט הישן.

אפשר אם כן לסכם:
ב Python משתנה הוא פשוט שם שמשוייך (מצביע על) אובייקט.


כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *