Python __ior__() שיטת קסם | פינקסטר

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
פרסומת
X-ray_Promo1


תחביר

object.__ior__(self, other)

הפייתון __ior__() שיטת הקסם מיישמת את OR x |= y שמחשב את התוצאה של OR פעולה x | y, ומקצה אותו למשתנה של האופרנדים הראשונים x. סוג זה של פעולה במקום נקרא גם מטלת חשבון מוגברת. השיטה פשוט מחזירה את הערך החדש שיוקצה לאופרנד הראשון.

לאחר מכן, התוצאה מוקצית לאופרנד הראשון x. אם אף אחת מהפעולות הללו לא מיושמת, Python מעלה א TypeError.

אנחנו קוראים לזה א "שיטת דאנדר" ל "דאובל תַחַתשיטת ניקוד" (המכונה גם "שיטת קסם"). לקבל רשימה של כל שיטות הדנדר עם הסבר, בדוק את שלנו מאמר גיליון הונאה של dunder בבלוג הזה.

דוגמה בסיסית עקיפה של __ior__

בדוגמה הבאה, אתה יוצר מחלקה Data ולהגדיר את שיטת הקסם __ior__(self, other).

  • ה "עצמי" ארגומנט הוא ארגומנט ברירת המחדל של כל שיטה והוא מתייחס לאובייקט שעליו הוא נקרא – במקרה שלנו, האופרנד הראשון של הפעולה במקום.
  • הטיעון "אחר" של השיטה במקום מתייחס לאופרנד השני, כלומר, y במבצע במקום x |= y.

ערך ההחזרה של הפעולה מחזיר מחרוזת דמה 'finxter 42' שיוקצה לאופרנד הראשון. בפועל, זו תהיה התוצאה של פעולת ה-OR בשיטת סיביות במקום.

class Data:
    def __ior__(self, other):
        return 'finxter 42'


x = Data()
y = Data()

x |= y

print(x)
# finxter 42

במקום או |= ללא __ior__()

כדי לתמוך בפעולת ה-OR המוצבת במקום במחלקה מותאמת אישית, אינך צריך להחליף את ה- __ior__() שיטה. כי אם השיטה לא תוגדר, Python תחזור למצב הרגיל __or__() שיטה ולהקצות את התוצאה שלה לאופרנד הראשון.

הנה דוגמה:

class Data:
    def __or__(self, other):
        return 'finxter 42'


x = Data()
y = Data()

x |= y

print(x)
# finxter 42

למרות שה __iand__() השיטה אינה מוגדרת, פעולת ה-AND במקום x &= y עדיין עובד בשל __and__() שיטת קסם "החזרה"!

במקום או |= ללא __ior__() ו__or__()

כדי לתמוך במקום OR x |= y במחלקה מותאמת אישית, אתה אפילו לא צריך להחליף אף אחד מה- x.__ior__(y) אוֹ x.__or__(y) שיטות. אם שניהם אינם מוגדרים, Python חוזר להפך y.__ror__(x) מתודה ומקצה את התוצאה שלה לאופרנד הראשון.

להלן דוגמה שבה אתה יוצר מחלקה מותאמת אישית עבור האופרנד הראשון שאינו תומך בפעולת OR סיביות. לאחר מכן אתה מגדיר מחלקה מותאמת אישית עבור האופרנד השני שמגדיר את __ror__() שיטה. עבור הפעולה במקום, Python נופל בחזרה ל- __ror__() שיטה שהוגדרה על האופרנד השני ומקצה אותו לאופרנד הראשון x:

class Data_1:
    pass

class Data_2:
    def __ror__(self, other):
        return 'finxter 42'

x = Data_1()
y = Data_2()

x |= y

print(x)
# finxter 42

TypeError: סוגי אופרנדים לא נתמכים עבור |=

אם תנסה לבצע OR בשיטת סיביות במקום x |= y אבל גם לא x.__ior__(y), ולא x.__or__(y), ולא y.__ror(x) מוגדר, Python מעלה "TypeError: unsupported operand type(s) for |=". כדי לתקן שגיאה זו, פשוט הגדר כל אחת מהשיטות הללו לפני ביצוע הפעולה במקום.

class Data:
    pass      # ... you should define __ior__ here to prevent error! ... #


x = Data()
y = Data()

x |= y

תְפוּקָה:

Traceback (most recent call last):
  File "C:UsersxcentDesktopcode.py", line 8, in <module>
    x |= y
TypeError: unsupported operand type(s) for |=: 'Data' and 'Data'

רקע Bitwise OR

של פייתון OR מַפעִיל x | y מבצע OR הגיוני על כל מיקום סיביות על הייצוגים הבינאריים של מספרים שלמים x ו y. כל ביט פלט מוערך ל-1 אם ורק אם לפחות אחד משני סיביות הקלט באותו מיקום הם 1.

לדוגמה, הביטוי של מספר שלם 4 | 3 מתורגם לפעולה הבינארית 0100 | 0011 מה שמביא 0111 כי בשלושת המיקומים האחרונים לפחות ביט אחד הוא 1.

מפעילי מתחם וידאו קשורים

הפניות:

לאן ללכת מכאן?

די לתיאוריה, בואו נעשה קצת תרגול!

כדי להצליח בקידוד, אתה צריך לצאת לשם ולפתור בעיות אמיתיות עבור אנשים אמיתיים. כך אתה יכול להפוך למרוויח שש ספרות בקלות. וככה אתה משפשף את הכישורים שאתה באמת צריך בפועל. אחרי הכל, מה התועלת בתורת הלמידה שאף אחד לא צריך?

פרויקטי תרגול הם הדרך שבה אתה משחיז את המסור שלך בקידוד!

האם אתה רוצה להיות מאסטר קוד על ידי התמקדות בפרויקטי קוד מעשיים שבעצם מרוויחים לך כסף ופותרים בעיות לאנשים?

אז הפוך למפתח פרילנסר של Python! זו הדרך הטובה ביותר לגשת למשימה של שיפור כישורי הפייתון שלך – גם אם אתה מתחיל לגמרי.

הצטרף לסמינר המקוון החינמי שלי "כיצד לבנות את המיומנות שלך עם הכנסה גבוהה" ותראה איך הגדלתי את עסק הקידוד שלי באינטרנט ואיך אתה יכול גם – מהנוחות של הבית שלך.

הצטרפו עכשיו לסמינר המקוון בחינם!

.



קישור לכתבת המקור – 2021-11-06 09:55:05

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on telegram
Telegram
Share on whatsapp
WhatsApp
Share on email
Email
פרסומת
תכנון תשתיות רפואיות

עוד מתחומי האתר