در این مطلب، ویدئو python: @decorators مبتنی بر کلاس (متوسط - پیشرفته) آنتونی #195 را توضیح می دهد با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:09:00
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:03,760 –> 00:00:04,960
ما در آخرین
2
00:00:04,960 –> 00:00:06,560
استریم در مورد دکوراتورها سؤالات زیادی داشتیم که آیا
3
00:00:06,560 –> 00:00:09,440
ویدیوی دیگری در مورد دکوراتورها وجود دارد. این یکی این بود
4
00:00:09,440 –> 00:00:11,920
که چگونه می توانم یک دکوراتور را با استفاده از یک کلاس
5
00:00:11,920 –> 00:00:14,080
به جای توابع بنویسم
6
00:00:14,080 –> 00:00:15,839
و تقریباً همه نمونه هایی که من تا
7
00:00:15,839 –> 00:00:17,760
نون نشان داده ام فقط از تو
8
00:00:17,760 –> 00:00:20,000
بع uh استفاده می کنند. برای پیادهسازی دکوراتورها، بنابراین
9
00:00:20,000 –> 00:00:21,119
این یکی
10
00:00:21,119 –> 00:00:22,160
به شما نشان میدهد که چگونه میتوانید با یک کلاس یکی بسازید،
11
00:00:22,160 –> 00:00:24,800
بیایید وارد آن شویم،
12
00:00:24,800 –> 00:00:28,080
بنابراین برای امروز میخواهیم
13
00:00:28,080 –> 00:00:28,880
14
00:00:28,880 –> 00:00:30,960
یک دکوراتور را پیادهسازی کنیم، حدس میزنم
15
00:00:30,960 –> 00:00:32,238
یک دکوراتور ذخیرهسازی را پیادهسازی کنیم
16
00:00:32,238 –> 00:00:35,440
که خوب به نظر میرسد. بنابراین
17
00:00:35,440 –> 00:00:37,280
بیایید آن را صرفاً کلاس
18
00:00:37,280 –> 00:00:39,840
حافظه پنهان بنامیم و من قصد ندارم آن را
19
00:00:39,840 –> 00:00:41,600
هیچ دکوراتور فانتزی ای نخواهد
20
00:00:41,600 –> 00:00:44,719
داشت، فقط
21
00:00:44,719 –> 00:00:46,399
تمام داده های استفاده شده را که
22
00:00:46,399 –> 00:00:47,520
در این نام خوانده می شود به طور بی نهایت کش
23
00:00:47,520 –> 00:00:50,000
ذخیره
24
00:00:50,000 –> 00:00:50,800
می کند. یک
25
00:00:50,800 –> 00:00:53,760
تابع محاسباتی میسازم که x را میگیرد و
26
00:00:53,760 –> 00:00:55,039
27
00:00:55,039 –> 00:00:58,239
x تصادف را برمیگرداند و یک پایان را برمیگرداند،
28
00:00:58,239 –> 00:01:01,760
شاید این تابع مجذور uh باشد، مطمئن باشید که
29
00:01:01,760 –> 00:01:04,080
چیزی شبیه به آن اوه، بیایید به
30
00:01:04,080 –> 00:01:06,960
عنوان یک اثر جانبی در اینجا نیز چاپ کنیم
31
00:01:09,760 –> 00:01:12,400
و آنچه را که با oky فراخوانی میشود نشان دهیم.
32
00:01:12,400 –> 00:01:14,000
برای پیاده سازی این
33
00:01:14,000 –> 00:01:16,640
دکوراتور به عنوان یک کلاس um، بنابراین اگر بخواهیم
34
00:01:16,640 –> 00:01:18,400
این کار را انجام دهیم، می دانید که با یک
35
00:01:18,400 –> 00:01:21,600
um با یک تابع، کاری
36
00:01:21,600 –> 00:01:22,720
مانند def cached انجام می
37
00:01:22,720 –> 00:01:25,040
دهیم و این یک تابع
38
00:01:25,040 –> 00:01:26,479
می گیرد و شما را با
39
00:01:26,479 –> 00:01:29,840
عرشه حافظه پنهان آشنا می کنیم که آرگ های ستاره ای را می گیرد.
40
00:01:29,840 –> 00:01:33,040
و حافظه نهان را به عرشه برگردانید و شاید این
41
00:01:33,040 –> 00:01:33,759
42
00:01:33,759 –> 00:01:37,200
دادههای کش نداشته باشد اگر آرگها در
43
00:01:37,200 –> 00:01:40,960
دادههای کش دادههای کش
44
00:01:40,960 –> 00:01:43,119
را برمیگرداند در واقع احتمالاً این کار را به این صورت انجام دهید.
45
00:01:43,119 –> 00:01:45,360
46
00:01:45,360 –> 00:01:48,399
47
00:01:48,399 –> 00:01:52,079
48
00:01:52,079 –> 00:01:55,600
49
00:01:55,600 –> 00:01:59,040
50
00:01:59,040 –> 00:02:02,560
بنابراین اگر یک تابع دکوراتور بود،
51
00:02:02,560 –> 00:02:03,920
احتمالاً این کار را به این صورت انجام میدادیم،
52
00:02:03,920 –> 00:02:05,920
53
00:02:05,920 –> 00:02:09,280
من سعی میکنم این را مقداردهی اولیه
54
00:02:09,280 –> 00:02:12,640
55
00:02:12,640 –> 00:02:16,720
کنم و ابزارهای funk import را قرار
56
00:02:16,720 –> 00:02:19,920
دهم و به هر حال ابزارهای فانک را تاپ wraps
57
00:02:19,920 –> 00:02:22,400
thunk قرار میدهیم، اجازه دهید حداقل
58
00:02:22,400 –> 00:02:23,599
ابتدا نسخه عملکرد را شروع
59
00:02:23,599 –> 00:02:24,879
کنیم و سپس کار کنیم. نسخه مبتنی بر کلاس را انجام خواهم داد، بنابراین
60
00:02:24,879 –> 00:02:25,680
اگر این
61
00:02:25,680 –> 00:02:28,800
python3 dash i t dot pi را انجام
62
00:02:28,800 –> 00:02:31,840
دهیم و محاسبه را با دو صدا کنیم، خواهید دید
63
00:02:31,840 –> 00:02:32,239
که
64
00:02:32,239 –> 00:02:34,239
ما این را چاپ کرده ایم زیرا آن را um نامیده ایم،
65
00:02:34,239 –> 00:02:36,080
اگر دوباره آن را صدا کنیم، این
66
00:02:36,080 –> 00:02:37,760
عارضه جانبی را دوباره انجام نمی دهد. ما c ارزش آن
67
00:02:37,760 –> 00:02:38,560
کاهش یافته است،
68
00:02:38,560 –> 00:02:39,920
اما البته اگر آن را چیز
69
00:02:39,920 –> 00:02:41,360
دیگری بنامیم، شما را با یک مقدار بازگشتی جدید
70
00:02:41,360 –> 00:02:42,720
و یک عارضه جانبی جدید آشنا خواهیم کرد، بنابراین این
71
00:02:42,720 –> 00:02:44,080
کار را با یک تابع انجام می دهید
72
00:02:44,080 –> 00:02:46,720
و فقط برای اطمینان از اینکه می دانید
73
00:02:46,720 –> 00:02:48,879
wraps ما به درستی کار می کند محاسبه کنید. .name
74
00:02:48,879 –> 00:02:52,319
گذشت، ما در واقع رشته سگ را انجام ندادیم،
75
00:02:52,319 –> 00:02:53,519
اما میبینید که
76
00:02:53,519 –> 00:02:55,760
حاشیهنویسیها نیز وارد میشوند
77
00:02:55,760 –> 00:03:00,400
و آیا امضای
78
00:03:00,400 –> 00:03:02,640
متنی امضا است، به هر حال یادم نیست چگونه
79
00:03:02,640 –> 00:03:03,760
امضا بگیرم،
80
00:03:03,760 –> 00:03:07,280
اما بله، شما میتوانید آن را دریافت کنید.
81
00:03:07,280 –> 00:03:08,239
از
82
00:03:08,239 –> 00:03:09,680
طریق ویژگی های شما وجود دارد، بنابراین اکنون بیایید
83
00:03:09,680 –> 00:03:11,840
همان کار را پیاده سازی کنیم، اما به عنوان یک کلاس
84
00:03:11,840 –> 00:03:14,080
um یک کلاس قرار است شبیه
85
00:03:14,080 –> 00:03:16,400
به این تابع ابتدا در مقداردهی اولیه
86
00:03:16,400 –> 00:03:18,239
و سپس با double under فراخوانی شود، بنابراین
87
00:03:18,239 –> 00:03:19,519
بیایید یک کلاس
88
00:03:19,519 –> 00:03:22,879
به نام cached و در
89
00:03:22,879 –> 00:03:24,640
double under knit بسازیم. دوباره
90
00:03:24,640 –> 00:03:26,560
تابع را دریافت میکنیم، بنابراین این
91
00:03:26,560 –> 00:03:28,400
متفاوت از uh اینجاست که ما
92
00:03:28,400 –> 00:03:31,599
تابع را با فراخوانی دریافت میکنیم
93
00:03:31,599 –> 00:03:33,360
و نمونهای از
94
00:03:33,360 –> 00:03:35,440
آن را برمیگرداند، بنابراین باید انجام دهیم، باید
95
00:03:35,440 –> 00:03:37,440
self.funk را در اینجا ذخیره
96
00:03:37,440 –> 00:03:40,720
کنیم. همچنین هر یک از ما را
97
00:03:40,720 –> 00:03:42,720
که می شناسید ذخیره می کند ta در اینجا ویژگیهای خود را نشان میدهد، بنابراین دادههای
98
00:03:42,720 –> 00:03:44,080
cache self dot
99
00:03:44,080 –> 00:03:47,120
را بهعنوان یک فرهنگ لغت نشان میدهد و سپس
100
00:03:47,120 –> 00:03:48,319
double under
101
00:03:48,319 –> 00:03:52,000
call را پیادهسازی میکنیم و این شبیه به
102
00:03:52,000 –> 00:03:54,080
این قسمت است که در اینجا یک دکوراتور ویژه داریم
103
00:03:54,080 –> 00:03:56,640
104
00:03:57,200 –> 00:04:00,480
و برای double under call کاری که
105
00:04:00,480 –> 00:04:01,840
میخواهیم انجام دهیم این است که سعی
106
00:04:01,840 –> 00:04:03,599
میکنیم به دادههای حافظه پنهانمان دسترسی پیدا کنیم، مشابه آنچه
107
00:04:03,599 –> 00:04:04,720
در اینجا انجام دادیم، بنابراین میخواهیم
108
00:04:04,720 –> 00:04:07,920
109
00:04:07,920 –> 00:04:11,360
بازوهای دادههای ذخیرهشده را بازگردانیم، خطای کلیدی را بپذیریم،
110
00:04:11,360 –> 00:04:15,680
اوه، دادههای حافظه پنهان، اوه، این
111
00:04:15,680 –> 00:04:16,160
باید نقطه نرم باشد.
112
00:04:16,160 –> 00:04:20,478
113
00:04:20,478 –> 00:04:20,880
114
00:04:20,880 –> 00:04:24,240
115
00:04:24,240 –> 00:04:27,520
و این اکثراً مانند
116
00:04:27,520 –> 00:04:28,160
قبل است،
117
00:04:28,160 –> 00:04:31,199
بنابراین اگر اکنون این