در این مطلب، ویدئو کلاسهای سادهتر: کلاسهای پایتون بدون کلفت با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:24:32
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,319 –> 00:00:06,980
بنابراین نام من تری است و من از پایتون برای
2
00:00:06,980 –> 00:00:10,260
آموزش استفاده میکنم، در واقع به مردم کمک میکنم
3
00:00:10,260 –> 00:00:11,730
مهارتهای پایتون خود را بهبود بخشند و از پایتون به
4
00:00:11,730 –> 00:00:15,690
طور مؤثرتری استفاده کنند، بنابراین همانطور که سام گفت، من یک سرویس مهارتسازی پایتون را اجرا میکنم که به
5
00:00:15,690 –> 00:00:17,250
آن
6
00:00:17,250 –> 00:00:19,350
لقمههای پایتون میگویند
7
00:00:19,350 –> 00:00:21,660
، اگر فکر میکنید هر هفته یک تمرین پایتون را به آنجا فرستادم.
8
00:00:21,660 –> 00:00:23,550
آن لوگو شایان ستایش است، من
9
00:00:23,550 –> 00:00:25,260
برچسب های زیادی دارم و دوست دارم
10
00:00:25,260 –> 00:00:27,869
استیکرهایی به شما بدهم و بعد از آن من را پیدا کنید،
11
00:00:27,869 –> 00:00:30,029
کار دیگری که انجام می دهم این است که آموزش پایتون را
12
00:00:30,029 –> 00:00:31,890
برای تیم ها از طریق شرکت خود انجام
13
00:00:31,890 –> 00:00:34,410
می دهم، دوست دارم با شما
14
00:00:34,410 –> 00:00:36,780
در مورد اینکه چگونه می توانم کمک کنم صحبت کنم شما و
15
00:00:36,780 –> 00:00:38,969
همکارانتان پایتون را مؤثرتر یاد میگیرید
16
00:00:38,969 –> 00:00:40,320
و اگر به آن علاقه دارید از پایتون بهعنوان تیمی مؤثرتر استفاده کنید،
17
00:00:40,320 –> 00:00:42,780
بنابراین
18
00:00:42,780 –> 00:00:43,800
19
00:00:43,800 –> 00:00:46,890
من در مورد کلاسها
20
00:00:46,890 –> 00:00:50,390
21
00:00:50,390 –> 00:00:52,949
صحبت میکنیم.
22
00:00:52,949 –> 00:00:55,770
pythonic آن کلمه pythonic را کلاس میدهد،
23
00:00:55,770 –> 00:00:57,809
اگرچه کمی
24
00:00:57,809 –> 00:01:00,420
بحث برانگیز است و میتوانم بگویم که
25
00:01:00,420 –> 00:01:02,550
کمی بیش از حد استفاده شده است، همچنین ما از آن به
26
00:01:02,550 –> 00:01:03,960
عنوان یک چکش برای صحبت در مورد همه چیز در
27
00:01:03,960 –> 00:01:06,030
دنیای پایتون استفاده میکنیم. o در عوض میخواهم
28
00:01:06,030 –> 00:01:08,630
بگویم که ما در مورد کلاسهای دوستانه صحبت میکنیم کلاسهای
29
00:01:08,630 –> 00:01:11,790
دوستانه کلاسهایی هستند که
30
00:01:11,790 –> 00:01:14,189
استفاده دوستانه برای افراد دیگر
31
00:01:14,189 –> 00:01:16,049
دوستانه است.
32
00:01:16,049 –> 00:01:18,990
33
00:01:18,990 –> 00:01:21,420
چیزهایی که
34
00:01:21,420 –> 00:01:23,610
کلاسهای دوستانه در خود دارند، نمایش رشتهای خوبی
35
00:01:23,610 –> 00:01:26,520
هستند که میتوان آنها را
36
00:01:26,520 –> 00:01:27,930
حداقل به روشهایی با یکدیگر مقایسه کرد
37
00:01:27,930 –> 00:01:31,500
و هر زمان که
38
00:01:31,500 –> 00:01:34,470
منطقی بود، از بارگذاری بیشازحد اپراتور پشتیبانی میکنند
39
00:01:34,470 –> 00:01:36,150
تا به خود اجازه دهند یک
40
00:01:36,150 –> 00:01:38,820
تکرار هشپذیر دوگانه باشند.
41
00:01:38,820 –> 00:01:41,220
چیزهایی که من میخواهم در مورد دو مثال
42
00:01:41,220 –> 00:01:43,409
در اینجا صحبت کنم و سپس
43
00:01:43,409 –> 00:01:45,360
روشهای مختلفی را مورد بحث قرار میدهیم که میتوانیم کلاسهایی
44
00:01:45,360 –> 00:01:47,070
از این گونهها ایجاد کنیم، بنابراین اولین
45
00:01:47,070 –> 00:01:49,439
مثال یک کلاس ماهانه است.
46
00:01:49,439 –> 00:01:53,100
47
00:01:53,100 –> 00:01:55,829
با این کلاس چیزی است که
48
00:01:55,829 –> 00:01:57,119
تقریباً با هر کلاسی که
49
00:01:57,119 –> 00:01:59,070
میخواهیم بتوانیم این کلاس
50
00:01:59,070 –> 00:02:01,200
را بسازیم و چیزهایی را به آن منتقل کنیم چیزی است که
51
00:02:01,200 –> 00:02:02,369
برای این کار نیاز داریم یک dunder init و روش
52
00:02:02,369 –> 00:02:03,270
اولیه
53
00:02:03,270 –> 00:02:05,490
d که احتمالاً همه شما قبلاً دیده اید،
54
00:02:05,490 –> 00:02:08,419
اگر کلاسی در پایتون ساخته اید،
55
00:02:08,419 –> 00:02:11,160
ما یک نمایش رشته مفید می خواهیم،
56
00:02:11,160 –> 00:02:12,959
براین این نمایش رشته بر
57
00:02:12,959 –> 00:02:13,860
ی به دست آوردن آن چیزی که می خواهیم مت
58
00:02:13,860 –> 00:02:16,050
Thunder repre را به رو
59
00:02:16,050 –> 00:02:17,280
ی که من گفتم dunder a زیر را اضافه کنید. دو
60
00:02:17,280 –> 00:02:18,840
بار در اینجا dunder مخفف زیرخط های دوگانه است
61
00:02:18,840 –> 00:02:21,150
که من از آن در اینجا استفاده می کنم، بنابراین،
62
00:02:21,150 –> 00:02:23,730
این
63
00:02:23,730 –> 00:02:26,100
روش ها اساساً روش های خاصی هستند که به
64
00:02:26,100 –> 00:02:28,410
عنوان یک قرارداد بین ما و مفسر پایتون عمل می کنند،
65
00:02:28,410 –> 00:02:30,630
ما می گوییم که می خواهیم شما را
66
00:02:30,630 –> 00:02:32,250
به کلاس ما متصل کنید تا انجام دهید. برخی از
67
00:02:32,250 –> 00:02:35,970
چیزهای خاص زمانی که و این متدهای
68
00:02:35,970 –> 00:02:39,900
dunder برای آن دسته استفاده میشوند، بنابراین در اینجا بسیار رایج
69
00:02:39,900 –> 00:02:41,640
است که
70
00:02:41,640 –> 00:02:45,020
اگر میخواهیم کلاس
71
00:02:45,020 –> 00:02:49,230
ما بتواند با کلاسهای دیگر قابل مقایسه باشد،
72
00:02:49,230 –> 00:02:51,870
باید از برابری آن پشتیبانی
73
00:02:51,870 –> 00:02:53,940
کنیم برای حمایت از برابری برای به دست آوردن
74
00:02:53,940 –> 00:02:55,680
آنها، باید کار دیگری انجام دهیم،
75
00:02:55,680 –> 00:02:57,450
باید یک روش dunder EQ بسازیم که
76
00:02:57,450 –> 00:02:59,220
قبلاً باید dunder را در
77
00:02:59,220 –> 00:03:03,120
پایتون 3 ایجاد میکردید
78
00:03:03,120 –> 00:03:04,470
. از این، اگرچه
79
00:03:04,470 –> 00:03:06,420
ممکن است ما نخواهیم فقط بگوییم آیا میتوانیم از
80
00:03:06,420 –> 00:03:08,670
یک شی بپرسیم که با شیء دیگر برابر است، اما
81
00:03:08,670 –> 00:03:11,880
آیا میتوانیم از یک شی بپرسیم که چگونه
82
00:03:11,880 –> 00:03:13,860
با دیگری مقایسه میشود، اگر
83
00:03:13,860 –> 00:03:15,600
میخواهیم اینها را نیز
84
00:03:15,600 –> 00:03:17,370
مرتب یا مرتب کنیم. مایلم اینطور فکر
85
00:03:17,370 –> 00:03:20,970
کنیم که ما به کمتر از
86
00:03:20,970 –> 00:03:22,769
کمتر از نیاز اپراتور Dunder Lt
87
00:03:22,769 –> 00:03:25,320
بیشتر از Dunder GT کمتر
88
00:03:25,320 –> 00:03:27,150
یا مساوی Dunder Le و
89
00:03:27,150 –> 00:03:28,500
بزرگتر یا مساوی dunder GE نیاز
90
00:03:28,500 –> 00:03:30,420
داریم. کلاس در
91
00:03:30,420 –> 00:03:32,220
اینجا بسیار بزرگتر از قبل است،
92
00:03:32,220 –> 00:03:35,670
بنابراین بعد از این کلاس ما
93
00:03:35,670 –> 00:03:38,060
بسیار بزرگ به نظر می رسد، کدهای زیادی در آن
94
00:03:38,060 –> 00:03:40,590
وجود دارد، ممکن است متوجه شوید که با این کد،
95
00:03:40,590 –> 00:03:43,380
تکرارهای زیادی در اینجا وجود دارد، اکثر این
96
00:03:43,380 –> 00:03:45,450
روش ها در واقع تقریباً دقیقاً مشابه هستند.
97
00:03:45,450 –> 00:03:46,980
روش مشابه، یعنی همه آن
98
00:03:46,980 –> 00:03:50,970
متدهای مقایسهای dunder تقریباً
99
00:03:50,970 –> 00:03:52,049
یکسان هستند و تنها چیزی که در
100
00:03:52,049 –> 00:03:53,250
مورد آنها متفاوت است
101
00:03:53,250 –> 00:03:57,360
عملگر است که برای هر یک از آنها استفاده میکنیم، بنابراین
102
00:03:57,360 –> 00:03:59,970
خوشبختانه یک کمکی یک
103
00:03:59,970 –> 00:04:02,100
تابع کمکی در کتابخانه استاندارد وجود دارد تا این را ایجاد کند.
104
00:04:02,100 –> 00:04:03,930
کمی کوتاهتر است
105
00:04:03,930 –> 00:04:05,580
تا کلاسی از این نوع را کمی
106
00:04:05,580 –> 00:04:08,280
آسانتر کند، ابزارهای فانک نامیده میشود،
107
00:04:08,280 –> 00:04:10,320
متأسفانه به آن سفارش کامل
108
00:04:10,320 –> 00:04:12,150
میگویند، در ابزارهای فانک زندگی میکند، بنابراین func tools یک
109
00:04:12,150 –> 00:04:13,260
ماژول است که در کتابخانه استاندارد زندگی میکند.
110
00:04:13,260 –> 00:04:15,299
111
00:04:15,299 –> 00:04:17,640
از این برای
112
00:04:17,640 –> 00:04:20,010
تزئین کلاس خود استفاده کنید و با اجرای تنها دو مورد
113
00:04:20,010 –> 00:04:22,200
از این روشها dunder EQ و dunder LT
114
00:04:22,200 –> 00:04:25,740
در این مورد، در اینجا همه روشهای دیگر را رایگان دریافت میکنیم.
115
00:04:25,740 –> 00:04:27,420
116
00:04:27,420 –> 00:04:30,030
117
00:04:30,030 –> 00:04:32,610
کد
118
00:04:32,610 –> 00:04:34,770
موجود در این کلاس، کدی است که
119
00:04:34,770 –> 00:04:38,610
واقعاً نیازی به وجود ندارد، بنابراین ما بعداً در پایان این بحث
120
00:04:38,610 –> 00:04:40,140
به روش بهتری برای ساخت این کلاس نگاهی خواهیم انداخت،
121
00:04:40,140 –> 00:04:41,640
در
122
00:04:41,640 –> 00:04:43,860
واقع ابتدا میخواهم در مورد یک
123
00:04:43,860 –> 00:04:45,660
مثال دیگر صحبت کنم که میخواهیم آن را بیان کنیم. تمرکز بر روی در
124
00:04:45,660 –> 00:04:47,820
درجه اول ما قرار است در مورد
125
00:04:47,820 –> 00:04:50,400
ایجاد یک نقطه صحبت کنیم، بنابراین این کلاسی است
126
00:04:50,400 –> 00:04:52,680
که یک نقطه سه بعدی XY
127
00:04:52,680 –> 00:04:56,070
و مختصات z را نشان می دهد، همان چیزی که قبلاً می
128
00:04:56,070 –> 00:04:58,650
خواهیم کلاس ما بتواند آرگومان ها را بپذیرد،
129
00:04:58,650 –> 00:05:00,300
بنابراین باید مقداردهی اولیه کنیم. r ما یک
130
00:05:00,300 –> 00:05:02,520
نمایش رشته زیبا می خواهیم و می خواهیم
131
00:05:02,520 –> 00:05:04,140
اشیاء نقطه ای ما
132
00:05:04,140 –> 00:05:07,530
با استفاده از برابری و نابرابری با یکدیگر قابل مقایسه باشند، چه می شود
133
00:05:07,530 –> 00:05:11,550
اگر بخواهیم کلاس ما نیز Abell باز شود، به این
134
00:05:11,550 –> 00:05:12,780
معنی که می توانیم از آن با چندین تکالیف استفاده کنیم،
135
00:05:12,780 –> 00:05:15,750
بنابراین این
136
00:05:15,750 –> 00:05:17,430
کمی عجیب است. اگر می گوییم X کاما Y ویرگول Z
137
00:05:17,430 –> 00:05:19,440
برابر است با P، ما انتظار داریم که کار کند و
138
00:05:19,440 –> 00:05:22,220
مختصات را در آنجا به ما بدهد، برای این
139
00:05:22,220 –> 00:05:27,690
کار باید یک روش درونی dunder اضافه کنیم تا تکرارپذیری را
140
00:05:27,690 –> 00:05:29,790
بدست آوریم، بنابراین ممکن است تکرارپذیری
141
00:05:29,790 –> 00:05:31,380
کمی غیرمعمول
142
00:05:31,380 –> 00:05:33,000
به نظر برسد. این مربوط به
143
00:05:33,000 –> 00:05:34,530
چندین انتساب است، اما پایتون اینگونه است
144
00:05:34,530 –> 00:05:37,260
که این را به طور پیشفرض در زیر هود پیادهسازی میکند
145
00:05:37,260 –> 00:05:41,280
، بنابراین تکرارپذیری چیزی است
146
00:05:41,280 –> 00:05:43,170
که برای تخصیص چندگانه باید پیادهسازی
147
00:05:43,170 –> 00:05:43,800
148
00:05:43,800 –> 00:05:45,510
کنیم، اگر بخواهیم حتی فراتر برویم و
149
00:05:45,510 –> 00:05:47,190
شاید این کلاس را تبدیل به چیزی کنیم
150
00:05:47,190 –> 00:05:49,410
که ثابت است، تنظیم شده است. در stone بعد از
151
00:05:49,410 –> 00:05:51,840
اینکه آن را ساختیم، میخواهیم این را
152
00:05:51,840 –> 00:05:54,510
تغییرناپذیر کنیم، بنابراین یک کلاس تغییرناپذیر کلاسی است
153
00:05:54,510 –> 00:05:56,250
که بعد از ایجاد آن نمیتوانید آن را تغییر دهید
154
00:05:56,250 –> 00:05:58,980
، بنابراین اگر بخواهیم بگوییم px برابر با f است، معنی آن این است که
155
00:05:58,980 –> 00:06:01,440
ما یک خطا دریافت می کنیم
156
00:06:01,440 –> 00:06:04,080
برای انجام این کار ما باید
157
00:06:04,080 –> 00:06:05,460
کاری کمی عجیب تر از ساختن آن
158
00:06:05,460 –> 00:06:07,170
در روش داخلی
159
00:06:07,170 –> 00:06:09,330
160
00:06:09,330 –> 00:06:11,310
انجام دهیم.
161
00:06:11,310 –> 00:06:12,570
اگر میخواهید خودتان
162
00:06:12,570 –> 00:06:14,370
آن را انتخاب کنید، اما این یک راه است که
163
00:06:14,370 –> 00:06:15,690
حداقل میتوانیم یک
164
00:06:15,690 –> 00:06:19,080
کلاس تغییرناپذیر در پایتون بسازیم اگر کلاس ما
165
00:06:19,080 –> 00:06:19,800
166
00:06:19,800 –> 00:06:21,600
بعد از تغییرناپذیری تغییرناپذیر است، یک چیز منطقی دیگر وجود دارد
167
00:06:21,600 –> 00:06:23,730
که ممکن است بخواهیم، میتوانیم بگوییم که
168
00:06:23,730 –> 00:06:25,410
لاس ما تغییرناپذیر است. بر
169
00:06:25,410 –> 00:06:27,840
استفاده از آن در مجموعهها یا میخواهیم از آن بهعنوان
170
00:06:27,840 –> 00:06:30,270
کلید در فرهنگ لغت استفاده کنیم برای این کار،
171
00:06:30,270 –> 00:06:32,850
این را رایگان دریافت نمیکنیم، باید آن را رایگان دریافت کنیم،
172
00:06:32,850 –> 00:06:34,560
اما آن را رایگان دریافت نمیکنیم، پایتون
173
00:06:34,560 –> 00:06:35,940
نمیداند چگونه آن را ارائه دهد.
174
00:06:35,940 –> 00:06:37,710
به ما باید آن را با آن تحت
175
00:06:37,710 –> 00:06:40,020
روش هش بگوییم، بنابراین ما به یک کلاس نیاز داریم که قابل هش باشد،
176
00:06:40,020 –> 00:06:41,970
بنابراین دوباره
177
00:06:41,970 –> 00:06:44,400
کدهای boilerplate زیادی در اینجا نوشتهایم که این کد در نهایت چگونه
178
00:06:44,400 –> 00:06:45,570
به نظر میرسد، اگر
179
00:06:45,570 –> 00:06:47,130
واقعاً برای هر یک از اینها پیادهسازی بنویسیم.
180
00:06:47,130 –> 00:06:49,860
روش ها این است که این یکی
181
00:06:49,860 –> 00:06:53,460
از پیاده سازی های ممکن حداقل تا این حد است
182
00:06:53,460 –> 00:06:55,590
کلاس is در واقع آنقدر طولانی نیست، من
183
00:06:55,590 –> 00:06:57,060
مطمئن نیستم که این چند خط کد است،
184
00:06:57,060 –> 00:06:59,850
اما هر روش بسیار کوتاه است، برخی از
185
00:06:59,850 –> 00:07:01,140
اینها ممکن است برای شما کمی جدید باشد، به
186
00:07:01,140 –> 00:07:02,670
عنوان مثال و در زیر آن یا
187
00:07:02,670 –> 00:07:04,320
اگر ندارید، بازدهی وجود دارد. متوجه نشدم که قبل از اینکه بتوانید
188
00:07:04,320 –> 00:07:06,570
ژنراتورها و تکرارکنندهها را در گوگل بسازید و چگونه
189
00:07:06,570 –> 00:07:09,150
آنها را به تنهایی بسازید، اما به طور کلی
190
00:07:09,150 –> 00:07:11,340
این تقریباً همه کدهای دیگ بخار است،
191
00:07:11,340 –> 00:07:13,800
یعنی زمان کد پیست است.
192
00:07:13,800 –> 00:07:15,930
193
00:07:15,930 –> 00:07:17,790
این کپی آن را پیست کرده
194
00:07:17,790 –> 00:07:20,310
و برای استفاده خودمان تغییرش دهیم، بنابراین
195
00:07:20,310 –> 00:07:22,590
اگر میتوانیم
196
00:07:22,590 –> 00:07:24,180
آن را از جایی کپی کنیم، نباید این کد را بنویسیم و
197
00:07:24,180 –> 00:07:25,530
پایتون بتواند این کد را
198
00:07:25,530 –> 00:07:29,940
برای ما بسازد، خوشبختانه ابزاری در
199
00:07:29,940 –> 00:07:31,710
کتابخانه استاندارد وجود دارد نوشتن کدی
200
00:07:31,710 –> 00:07:33,090
که شبیه به
201
00:07:33,090 –> 00:07:36,720
آن نامیده می شود تاپل نامیده می شود، بنابراین تاپل نامش
202
00:07:36,720 –> 00:07:39,930
در پایتون 3 تعبیه شده است.
203
00:07:39,930 –> 00:07:42,540
204
00:07:42,540 –> 00:07:45,930
205
00:07:45,930 –> 00:07:49,680
206
00:07:49,680 –> 00:07:51,690
بنابراین x
207
00:07:51,690 –> 00:07:54,960
y&z آنها هستند کلاسی که از این به دست می آوریم
208
00:07:54,960 –> 00:07:57,390
یک نمایش رشته ای دوستانه دارد
209
00:07:57,390 –> 00:08:01,320
و دارای مقایسه های پیش فرض خوبی
210
00:08:01,320 –> 00:08:02,910
به معنای برابری و
211
00:08:02,910 –> 00:08:06,390
نابرابری است و این کلاس ها همانطور که ما
212
00:08:06,390 –> 00:08:08,160
می خواهیم حداقل برای این نقطه
213
00:08:08,160 –> 00:08:10,530
در اینجا باشند تغییر ناپذیر هستند، درست مانند تاپل
214
00:08:10,530 –> 00:08:13,620
ها. اگر قبلاً تاپل نامگذاری شده را
215
00:08:13,620 –> 00:08:16,140
دیدهاید اما در ابزار پایتون بودهاید
216
00:08:16,140 –> 00:08:17,760
و یا شاید از
217
00:08:17,760 –> 00:08:20,040
کدی استفاده میکنید که میدانید قبل از
218
00:08:20,040 –> 00:08:22,530
پایتون 3.5 یا بیشتر کار میکرده است، زمانی که ممکن است
219
00:08:22,530 –> 00:08:24,870
تاپل نامگذاری شده را اضافه کنند، تاپل نام دیگری وجود داشته است.
220
00:08:24,870 –> 00:08:26,040
که در ماژول مجموعه ها زندگی می کرد،
221
00:08:26,040 –> 00:08:28,440
این یکی از نظر نحو کمی متفاوت است،
222
00:08:28,440 –> 00:08:29,700
می توانید
223
00:08:29,700 –> 00:08:33,890
تفاوت های بین آن ها را بعداً جستجو کنید، بنابراین من
224
00:08:33,890 –> 00:08:36,679
در واقع نمی خواهم شما این کار را انجام دهید، من
225
00:08:36,679 –> 00:08:39,150
نمی خواهم از تاپل نامگذاری شده برای
226
00:08:39,150 –> 00:08:40,919
بیان دلیل استفاده کنید
227
00:08:40,919 –> 00:08:44,550
تاپلها دارای معایبی هستند به نام
228
00:08:44,550 –> 00:08:47,550
تاپلها از تاپلها به ارث میبرند، به این معنی
229
00:08:47,550 –> 00:08:50,070
که تمام ویژگیهایی را که
230
00:08:50,070 –> 00:08:53,550
تاپلها دارند به ارث میبرند، بنابراین میتوان آنها را سفارش داد
231
00:08:53,550 –> 00:08:55,740
که میتواند برای ما خوب باشد.
232
00:08:55,740 –> 00:08:58,110
233
00:08:58,110 –> 00:09:01,399
مختصات r X از Y و سپس Z
234
00:09:01,399 –> 00:09:03,630
که به این معنی است که ما واقعاً این
235
00:09:03,630 –> 00:09:04,980
را نمیخواهیم، ما میخواهیم این رفتار را غیرفعال کنیم، آن
236
00:09:04,980 –> 00:09:07,649
ا همچنین میتوانند به یکدیگر اضافه شوند که
237
00:09:07,649 –> 00:09:10,500
ر واقع جالب به
238
00:09:10,500 –> 00:09:11,700
239
00:09:11,700 –> 00:09:13,140
ظر میرسد. امتیازها را به یکدیگر اضافه کنید
240
00:09:13,140 –> 00:09:16,339
اما چیزی که برمی
241
00:09:16,339 –> 00:09:19,519
گردانید احتمالاً آن چیزی نیست که انتظارش را داشتید
242
00:09:19,519 –> 00:09:23,310
ما 1 2 و 3 اضافه شده 2 4 5 و 6 را
243
00:09:23,310 –> 00:09:27,180
دریافت نمی کنیم، 1 2 3 اضافه شده 2 4 5 و 6 را دریافت می کنیم.
244
00:09:27,180 –> 00:09:30,480
6 عنصر را پشت سر هم قرار دهید، بنابراین برای ضرب هم همینطور است،
245
00:09:30,480 –> 00:09:32,600
می توانیم 1 2 و 3
246
00:09:32,600 –> 00:09:35,760
این نقطه را در 2
247
00:09:35,760 –> 00:09:40,170
248
00:09:40,170 –> 00:09:43,860
ضرب کنیم. تاپلهایی که
249
00:09:43,860 –> 00:09:45,390
طول دارند، ویژگیهای دیگری نیز دارند که
250
00:09:45,390 –> 00:09:47,579
خاص تاپل هستند، این دو
251
00:09:47,579 –> 00:09:48,839
ویژگی Polly هستند که سعی میکنند مانند
252
00:09:48,839 –> 00:09:53,940
تاپلهایی با نام تاپلها مفید عمل کنند، اما
253
00:09:53,940 –> 00:09:56,130
هنگام استفاده از آنها باید مراقب باشید
254
00:09:56,130 –> 00:09:59,570
تا بتوانید بیش از حد بارگذاری یا لغو
255
00:09:59,570 –> 00:10:01,860
کنید. یکی از این روشها در اینجا برای
256
00:10:01,860 –> 00:10:03,570
رفع این مشکل، واقعاً ناخوشایند است، در
257
00:10:03,570 –> 00:10:04,950
واقع این کد باگ است، من در واقع حتی آن را
258
00:10:04,950 –> 00:10:06,779
هم ندارم جوهر به روشی کار می کند که ممکن
259
00:10:06,779 –> 00:10:09,899
است در برخی موارد انتظار داشته باشید پیدا کردن و
260
00:10:09,899 –> 00:10:12,750
حذف ویژگی ها از تاپل های نامگذاری شده
261
00:10:12,750 –> 00:10:15,000
بیشتر از اضافه کردن
262
00:10:15,000 –> 00:10:16,320
ویژگی هایی است که در کلاس خود می خواهید،
263
00:10:16,320 –> 00:10:19,380
بنابراین سعی نکنید از
264
00:10:19,380 –> 00:10:21,800
تاپل های نامگذاری شده استفاده کنید و آنها را پیدا و حذف کنید. ویژگیهایی
265
00:10:21,800 –> 00:10:25,140
که نمیخواهید به جای آن ویژگیهایی را اضافه کنید
266
00:10:25,140 –> 00:10:27,360
که میخواهید باعث شود کلاس شما
267
00:10:27,360 –> 00:10:29,160
دقیقاً همان چیزی را که میخواهید پشتیبانی کند، به
268
00:10:29,160 –> 00:10:31,020
حذف عملکردهایی که
269
00:10:31,020 –> 00:10:34,170
نمیخواهید از کلاسهای دیگر ادامه دهید، بنابراین از
270
00:10:34,170 –> 00:10:36,449
تاپل نامگذاری شده استفاده نکنید، مگر اینکه سعی کنید برای
271
00:10:36,449 –> 00:10:41,310
ساختن کلاسی که مانند تاپل عمل میکند، یکی از
272
00:10:41,310 –> 00:10:43,410
جایگزینهای نام تاپلها، adders
273
00:10:43,410 –> 00:10:45,810
adders یک کتابخانه شخص ثالث است
274
00:10:45,810 –> 00:10:48,480
و ایجاد کلاسهایی با بسیاری از
275
00:10:48,480 –> 00:10:51,959
ویژگیهای مشترک را بسیار آسان میکند، بنابراین میتوانید
276
00:10:51,959 –> 00:10:53,610
با نصب پیپ، جمعکنندهها را دریافت کنید و
277
00:10:53,610 –> 00:10:56,339
پس از آن میتوانید از آن استفاده کنید. آن را با وارد کردن
278
00:10:56,339 –> 00:10:58,589
جمعکننده بدون s که
279
00:10:58,589 –> 00:11:01,370
کمی عجیب است و سپس تزئین کلاس خود
280
00:11:01,370 –> 00:11:06,120
با دکوراتور attrs که خودکار در
281
00:11:06,120 –> 00:11:07,379
ribs برابر است با چیزی واقعی که
282
00:11:07,379 –> 00:11:11,220
به ما امکان میدهد از نکات تایپ استفاده کنیم، درست همانطور
283
00:11:11,220 –> 00:11:14,789
که با تاپل نامگذاری شده در لحظه استفاده کردیم. o بنابراین
284
00:11:14,789 –> 00:11:19,169
بهطور پیشفرض، کلاسهای جمعکننده یک نمایش رشتهای زیبا
285
00:11:19,169 –> 00:11:22,379
درست مانند کلاه تاپلی نام ما
286
00:11:22,379 –> 00:11:23,849
و دقیقاً همانطور که انتظارش را داریم، دریافت
287
00:11:23,849 –> 00:11:26,129
میکنند و میتوان آنها را بهطور منطقی
288
00:11:26,129 –> 00:11:28,189
با استفاده از برابری و نابرابری با یکدیگر مقایسه کرد،
289
00:11:28,189 –> 00:11:32,039
اما همچنین میتوان آنها را به همان
290
00:11:32,039 –> 00:11:33,509
روشی ترتیب داد که تاپلهای نام میتوانند ترتیب داده شوند. که
291
00:11:33,509 –> 00:11:34,919
در این مورد کمی عجیب است، ما
292
00:11:34,919 –> 00:11:36,629
نمیخواهیم حداقل با اشیاء نقطهای ما کار کند
293
00:11:36,629 –> 00:11:40,139
و تکرارپذیر نیستند و
294
00:11:40,139 –> 00:11:42,149
تغییر ناپذیر نیستند، یعنی نمیتوانیم
295
00:11:42,149 –> 00:11:43,439
از آنها با انتساب چندگانه استفاده
296
00:11:43,439 –> 00:11:44,819
کنیم. اگر
297
00:11:44,819 –> 00:11:46,499
بخواهیم دو ویژگی را اختصاص دهیم تا
298
00:11:46,499 –> 00:11:48,569
کلاس نقطه ما کاملاً
299
00:11:48,569 –> 00:11:50,970
با جمع کننده ها کار نکند، با خطا مواجه می شویم، حداقل اگر می
300
00:11:50,970 –> 00:11:53,309
301
00:11:53,309 –> 00:11:57,989
خواهیم کلاس نقطه خود را با استفاده از جمع کننده ها ایجاد کنیم، می توانیم ثابت کنیم.
302
00:11:57,989 –> 00:12:01,349
برابر true است، همانطور که ما
303
00:12:01,349 –> 00:12:05,309
کلاس خود را در اینجا با attrs تزئین می کنیم، این باعث می شود
304
00:12:05,309 –> 00:12:07,529
کلاس ما تغییر ناپذیر باشد، به این معنی که ما نمی توانیم
305
00:12:07,529 –> 00:12:09,289
آن ویژگی ها را بعد از اینکه آنها را تغییر
306
00:12:09,289 –> 00:12:11,279
دادیم همان کاری که در اینجا
307
00:12:11,279 –> 00:12:12,899
308
00:12:12,899 –> 00:12:15,899
انجام دادیم تغییر دهیم. قبل از اینکه o را بسازد به صورت دستی انجام داد
309
00:12:15,899 –> 00:12:17,279
کلاس ur با چندین
310
00:12:17,279 –> 00:12:18,659
تکالیف کار می کند، کلاس ما را
311
00:12:18,659 –> 00:12:22,409
تکرارپذیر می کند، متأسفانه عملگرهای مقایسه را نیز غیرفعال کرده ایم،
312
00:12:22,409 –> 00:12:24,269
متأسفانه غیرفعال
313
00:12:24,269 –> 00:12:25,859
کردن عملگرهای مقایسه به این معنی است که اگر می خواهیم کلاس ما از برابری استفاده کند باید به
314
00:12:25,859 –> 00:12: