ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
אורח · ·
 

הודעה פורסם: 22/06/2015 - 22:20
נושא ההודעה: מישהו יכול להסביר לי מה זה decorator בפייתון?

מנסה להבין איך להשתמש בDecorator בפייתון אבל לא ממש מצליח להבין.
למה שאני ירצה להכניס פונקציה לתוך פונקציה (זה לא התפקיד של class?)

כמענה לאיזה בעיה זה מגיע.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/06/2015 - 22:34
נושא ההודעה:

http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/

decorator מאפשר לך לשנות פונקציה על ידי זה שאתה מריץ עליה פונקציה שמחזירה פונקציה. טוב, יצא קצת מסובך, אבל הנה דוגמה פשוטה -
נגיד יש לך כמה פונקציות במחלקה מסוימת, ולפני כל אחת מהן אתה רוצה לעשות פעולה קבועה, אז במקום לכתוב את אותו קוד בכל אחת מהפונקציות, אתה יכול "לקשט" אותן בעזרת פונקציה שמוסיפה את ההתנהגות הזאת לפני הקריאה לפונקציה הסופית.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 29/06/2015 - 17:27
נושא ההודעה:

עדין מעכל
תודה על ההסבר (ביקרתי כבר בלינק)
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 29/06/2015 - 19:16
נושא ההודעה:

לצערי קשה לי להסביר מה זה decorator,
אני בעצמי עוד לומד פייטון Smile

אבל אני יכול להפנות אותך לחיפוש בגוגל שיעזור!
https://www.google.co.il/search?client=ubuntu&channel=fs&q=decorator+logger+example&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=wW6RVbXuG4Ox8weVtoyoAQ#channel=fs&q=python+decorator+example

בדרך כלל החיפושים האלה מניבים תוצאות טובות Smile

ופלוס אני יכול להפנות אותך לקורס שהעביר בחור מהעבודה שלי שבו הוא גם הביא דוגמאות של מה זה decorator ומתי נרצה להשתמש בו,
אנסה למצוא גם את הnotes שכתבתי בזמן הקורס Smile
ובינתיים תציץ כאן:
https://github.com/gavrie/pycourse
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2139 ·
 

הודעה פורסם: 30/06/2015 - 11:00
נושא ההודעה:

הנה דוגמא שהצלחתי להבין בפשטות


קוד:

As Jack states in his talk, a decorator is merely syntactic sugar. The same functionality can be achieved without using the decorator syntax. This code snippet:

@mydecorator
def myfunc():
    pass

is equivalent to:

def myfunc():
    pass
myfunc = mydecorator(myfunc)




הדוגמא לקוחה מכאן אז זה מקום טוב להמשיך:

http://www.saltycrane.com/blog/2010/03/simple-python-decorator-examples/

_________________
מערכת: GNU/Linux debian
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/06/2015 - 11:43
נושא ההודעה:

אתם מפספסים את העיקר.

בפייתון גם פונקציות הן אובייקטים. ואפשר לשלוח אותם לפונקציות אחרות. decorator הוא קיצור לשליחה של פונקציה לפונקציה אחרת. אני אסביר עם דוגמא:
קוד:
def double(func):
    def new_func(self, *args, **kwargs):
        ret = func(self, *args, **kwargs)
        return ret * 2

    return new_func

def add_one(number):
    return number + 1

@double
def add_one_then_double(number):
    return number + 1

add_one_then_double_2 = double(add_one)

print add_one(10)
print add_one_then_double(10)
print add_one_then_double_2(10)
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח
  2. אורח
  3. אורח
  4. אורח
  5. queency
  6. אורח