در این مطلب، ویدئو #22: وراثت در پایتون (کلاس های مشتق شده/فرزند) | پایتون برای مبتدیان با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:52
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,080 –> 00:00:02,399
قبل از اینکه در مورد وراثت پایتون یاد بگیریم،
2
00:00:02,399 –> 00:00:03,760
بیایید مثالی ببینیم که
3
00:00:03,760 –> 00:00:05,680
چرا از آن استفاده می شود و
4
00:00:05,680 –> 00:00:06,879
5
00:00:06,879 –> 00:00:09,200
6
00:00:09,200 –> 00:00:11,599
7
00:00:11,599 –> 00:00:13,840
چه مشکلی را حل می
8
00:00:13,840 –> 00:00:15,599
9
00:00:15,599 –> 00:00:16,880
10
00:00:16,880 –> 00:00:19,520
کند. هم خودروها و هم موتورسیکلت ها
11
00:00:19,520 –> 00:00:20,240
وسایل نقلیه هستند
12
00:00:20,240 –> 00:00:21,680
و برخی از ویژگی ها و روش های مشترک را به اشتراک می گذارند،
13
00:00:21,680 –> 00:00:23,359
14
00:00:23,359 –> 00:00:25,199
بنابراین به جای ایجاد دو کلاس مستقل،
15
00:00:25,199 –> 00:00:26,880
کاری که می توانیم انجام دهیم این
16
00:00:26,880 –> 00:00:29,359
است که یک کلاس خودرو ایجاد کنیم که
17
00:00:29,359 –> 00:00:31,519
ویژگی های مشترک خودروها و
18
00:00:31,519 –> 00:00:32,719
موتورسیکلت ها را به اشتراک بگذارد،
19
00:00:32,719 –> 00:00:35,200
سپس می توانیم یک کلاس خودرو را از
20
00:00:35,200 –> 00:00:36,480
کلاس خودرو
21
00:00:36,480 –> 00:00:38,960
با انجام این کار، کلاس خودرو
22
00:00:38,960 –> 00:00:39,920
تمام ویژگیها
23
00:00:39,920 –> 00:00:42,160
و روشهای کلاس خودرو را به ارث میبرد و
24
00:00:42,160 –> 00:00:44,480
بعداً میتوانیم ویژگیهای خاص خودرو را به
25
00:00:44,480 –> 00:00:45,840
کلاس خودرو اضافه
26
00:00:45,840 –> 00:00:48,079
کنیم، همچنین میتوانیم یک کلاس موتورسیکلت ایجاد کنیم
27
00:00:48,079 –> 00:00:50,320
که به روشی مشابه از وسیله نقلیه به ارث میبرد.
28
00:00:50,320 –> 00:00:51,280
29
00:00:51,280 –> 00:00:53,760
مفهوم
30
00:00:53,760 –> 00:00:55,280
وراثت به ما اجازه می دهد تا
31
00:00:55,280 –> 00:00:57,280
ویژگی ها و روش ها را از یک
32
00:00:57,280 –> 00:00:59,120
کلاس والد به یک کلاس فرزند
33
00:00:59,120 –> 00:01:01,600
در این مثال به ارث ببریم. والد یا
34
00:01:01,600 –> 00:01:02,480
کلاس پایه ما
35
00:01:02,480 –> 00:01:05,040
در حالی که ماشین و موتور سیکلت
36
00:01:05,040 –> 00:01:06,960
کلاس های فرزند یا مشتق ما هستند
37
00:01:06,960 –> 00:01:09,040
با نوشتن برنامه هایی به این روش می توانیم از
38
00:01:09,040 –> 00:01:11,200
کدهایی استفاده کنیم که برای کلاس های مختلف رایج است
39
00:01:11,200 –> 00:01:12,080
40
00:01:12,080 –> 00:01:14,720
و همچنین استفاده و نگهداری کدمان را آسان تر می
41
00:01:14,720 –> 00:01:16,240
کند
42
00:01:16,240 –> 00:01:18,640
اکنون که در مورد وراثت می دانیم،
43
00:01:18,640 –> 00:01:20,560
بیاموزیم چگونه برای پیادهسازی آن در پایتون
44
00:01:20,560 –> 00:01:23,119
با کمک
45
00:01:24,840 –> 00:01:26,560
مثالهایی
46
00:01:26,560 –> 00:01:29,119
در مثال آینده، یک
47
00:01:29,119 –> 00:01:29,920
کلاس نقطه
48
00:01:29,920 –> 00:01:32,560
از یک کلاس حیوانی استخراج میکنیم و احساس
49
00:01:32,560 –> 00:01:34,400
50
00:01:34,400 –> 00:01:36,320
میکنیم که وراثت چگونه کار میکند، سپس برای ایجاد یک مثال کاربردیتر حرکت میکنیم،
51
00:01:36,320 –> 00:01:38,079
52
00:01:38,079 –> 00:01:42,399
بنابراین من میگویم حیوانات کلاس
53
00:01:42,399 –> 00:01:44,880
بیایید یک متد به نام eat در داخل آن تعریف کنیم،
54
00:01:44,880 –> 00:01:45,759
55
00:01:45,759 –> 00:01:49,040
بنابراین در اینجا میگویم def eat
56
00:01:49,040 –> 00:01:53,680
self و در داخل میگویم print
57
00:01:53,680 –> 00:01:58,320
i can eat این کلاس پایه یا والد ما است،
58
00:01:58,320 –> 00:01:59,360
59
00:01:59,360 –> 00:02:02,000
حالا بیایید کلاس سگ را از این
60
00:02:02,000 –> 00:02:02,880
کلاس استخراج کنیم،
61
00:02:02,880 –> 00:02:06,079
بنابراین در اینجا میگویم
62
00:02:06,079 –> 00:02:09,679
کلاس سگ و قبل از پرانتز
63
00:02:09,679 –> 00:02:14,560
، حیوان را داخل پرانتزهای
64
00:02:15,200 –> 00:02:18,000
داخل این کلاس اضافه میکنم، متد bark را ایجاد میکنم
65
00:02:18,000 –> 00:02:19,840
که مخصوص کلاس doc است،
66
00:02:19,840 –> 00:02:22,879
بنابراین در اینجا میگویم def
67
00:02:22,879 –> 00:02:26,560
bark self
68
00:02:26,879 –> 00:02:28,640
و در داخل تعریف تابع
69
00:02:28,640 –> 00:02:30,160
میگویم print
70
00:02:30,160 –> 00:02:34,080
i can bark thi کلاس s door
71
00:02:34,080 –> 00:02:36,400
تمام صفات و
72
00:02:36,400 –> 00:02:37,920
متدهای کلاس حیوانات را به ارث می
73
00:02:37,920 –> 00:02:40,560
برد، یعنی اشیاء سگ نیز می
74
00:02:40,560 –> 00:02:40,959
توانند به
75
00:02:40,959 –> 00:02:43,360
ویژگی ها و متدهای حیوان دسترسی داشته باشند، بیایید
76
00:02:43,360 –> 00:02:44,640
ببینیم چگونه
77
00:02:44,640 –> 00:02:46,720
بنابراین در اینجا می گویم یک
78
00:02:46,720 –> 00:02:48,720
شی جدید به نام dog1 ایجاد می
79
00:02:48,720 –> 00:02:52,560
کنم و می گویم dog اکنون یک برابر با سگ است،
80
00:02:52,560 –> 00:02:55,120
من می توانم این روش پارس را روی
81
00:02:55,120 –> 00:02:55,680
سگ
82
00:02:55,680 –> 00:02:58,800
یک شی بنامم، بنابراین می گویم سگ یک
83
00:02:58,800 –> 00:03:01,440
نقطه پارس می کند، اکنون وقتی این کد را اجرا می کنم،
84
00:03:01,440 –> 00:03:03,680
باید خروجی را تصور کرده
85
00:03:03,680 –> 00:03:07,440
باشید که می گوید من می توانم پارس کنم، زیرا کلاس سگ ما
86
00:03:07,440 –> 00:03:07,760
به
87
00:03:07,760 –> 00:03:10,800
ارث رسیده است سگ کلاس حیوانی
88
00:03:10,800 –> 00:03:12,959
هم می توان روش eat
89
00:03:12,959 –> 00:03:14,159
تعریف شده در حیوان را صدا زد،
90
00:03:14,159 –> 00:03:18,159
بنابراین می توانم بگویم dog one
91
00:03:18,159 –> 00:03:21,920
dot eat و حالا وقتی run را فشار
92
00:03:21,920 –> 00:03:25,200
می دهم سپس می توانم بخورم نیز چاپ می شود زیرا
93
00:03:25,200 –> 00:03:28,400
سگ یک به روش eat
94
00:03:28,400 –> 00:03:30,400
کلاس حیوانات دسترسی دارد
95
00:03:30,400 –> 00:03:32,159
بیایید ببینیم از در همان ابتدای اتفاقی که در
96
00:03:32,159 –> 00:03:33,519
اینجا رخ می دهد،
97
00:03:33,519 –> 00:03:36,239
ما کلاس dog را از کلاس حیوانات استخراج کردیم،
98
00:03:36,239 –> 00:03:37,440
99
00:03:37,440 –> 00:03:39,519
بنابراین کلاس dog تمام
100
00:03:39,519 –> 00:03:42,239
ویژگی های کلاس حیوانات را به ارث می برد،
101
00:03:42,239 –> 00:03:45,200
اکنون این شی از کلاس حیوانات می تواند
102
00:03:45,200 –> 00:03:47,280
به ویژگی ها و متدهای
103
00:03:47,280 –> 00:03:50,080
هر دو کلاس نقطه و کلاس حیوانات
104
00:03:50,080 –> 00:03:50,959
به طور مشابه دسترسی داشته باشد.
105
00:03:50,959 –> 00:03:53,200
اگر بخواهیم میتوانیم کلاس دیگری
106
00:03:53,200 –> 00:03:54,879
به نام cat را از کلاس حیوانات مانند
107
00:03:54,879 –> 00:03:55,760
این استخراج کنیم،
108
00:03:55,760 –> 00:03:59,519
بنابراین در اینجا میتوانم بگویم class
109
00:03:59,519 –> 00:04:03,200
cat و داخل بریسها میگویم animal
110
00:04:03,200 –> 00:04:05,360
بنابراین در داخل این کلاس یک
111
00:04:05,360 –> 00:04:07,040
متدی به نام get grumpy تعریف
112
00:04:07,040 –> 00:04:11,280
میکنم پس میگویم def زیر خط
113
00:04:11,280 –> 00:04:15,439
بدخلق خود را بگیرید
114
00:04:15,439 –> 00:04:18,478
و در داخل آن می گویم چاپ کنید
115
00:04:18,478 –> 00:04:23,600
من بدخلق می
116
00:04:23,680 –> 00:04:26,160
شوم حالا اجازه دهید یک شی از کلاس
117
00:04:26,160 –> 00:04:27,520
118
00:04:27,520 –> 00:04:31,440
cat cat یک برابر با cat ایجاد کنم و بیایید
119
00:04:31,440 –> 00:04:33,840
متد eat را فراخوانی کنیم تا ببینیم آیا برای گربه در دسترس است یا نه،
120
00:04:33,840 –> 00:04:35,199
121
00:04:35,199 –> 00:04:38,639
بنابراین در اینجا می گویم cat1 dot eat
122
00:04:38,639 –> 00:04:41,840
و وقتی run را فشار می دهم همانطور که می بینید
123
00:04:41,840 –> 00:04:42,639
من می توانم
124
00:04:42,639 –> 00:04:47,360
بخورم از شی cat1 چاپ می شود و
125
00:04:47,360 –> 00:04:49,840
همینطور که ما به تازگی دیدیم اشیاء cat نیز می توانند
126
00:04:49,840 –> 00:04:51,600
از متد eat تعریف شده در کلاس والد استفاده کنند
127
00:04:51,600 –> 00:04:52,479
128
00:04:52,479 –> 00:04:54,800
حتی از این مثال بسیار ساده که
129
00:04:54,800 –> 00:04:57,040
می بینیم این وراثت کد ما را
130
00:04:57,040 –> 00:04:59,520
منظمتر و قابل استفادهتر میکند
131
00:04:59,520 –> 00:05:01,520
و اگر این ویدیو را مفید
132
00:05:01,520 –> 00:05:04,240
میدانید، یک زیر کانال
133
00:05:04,240 –> 00:05:05,759
قبل از انتقال به بخش بعدی
134
00:05:05,759 –> 00:05:07,919
ویدیو فوقالعاده خواهد بود، تیم برنامهنویس برنامهای ایجاد کردهاند
135
00:05:07,919 –> 00:05:09,600
که به شما امکان میدهد پایتون را از طریق خود یاد بگیرید.
136
00:05:09,600 –> 00:05:10,000
137
00:05:10,000 –> 00:05:12,320
تلفن حاوی برنامه درسهایی با اندازه بیت
138
00:05:12,320 –> 00:05:13,759
که درک
139
00:05:13,759 –> 00:05:15,280
یک مفسر داخلی آسانتر است تا
140
00:05:15,280 –> 00:05:17,440
بتوانید آزمونهای پایتون را روی گوشی خود اجرا کنید
141
00:05:17,440 –> 00:05:19,280
و بسیاری از ویژگیهای دیگر این
142
00:05:19,280 –> 00:05:20,720
برنامه در iOS
143
00:05:20,720 –> 00:05:22,560
و اندروید
144
00:05:22,560 –> 00:05:25,120
145
00:05:25,120 –> 00:05:26,800
در دسترس است.
146
00:05:26,800 –> 00:05:28,160
مثال عملی وراثت
147
00:05:28,160 –> 00:05:30,000
و همچنین
148
00:05:30,000 –> 00:05:32,160
در مثال خود مفهوم نادیده گرفتن متد را نیز پوشش
149
00:05:32,160 –> 00:05:33,919
خواهیم داد، قصد داریم برنامه ای را برای
150
00:05:33,919 –> 00:05:35,680
محاسبه محیط چند ضلعی های مختلف
151
00:05:35,680 –> 00:05:36,639
152
00:05:36,639 –> 00:05:39,280
مانند مثلث ها و چهار ضلعی ها با استفاده از
153
00:05:39,280 –> 00:05:40,240
وراثت پیاده سازی
154
00:05:40,240 –> 00:05:42,400
کنیم، در اینجا کاری که انجام خواهیم داد ابتدا
155
00:05:42,400 –> 00:05:43,840
یک کلاس چند ضلعی ایجاد می کنیم
156
00:05:43,840 –> 00:05:46,160
که دارای یک متد اولیه، یک روش برای
157
00:05:46,160 –> 00:05:47,280
محاسبه محیط
158
00:05:47,280 –> 00:05:49,120
و یک روش برای نمایش
159
00:05:49,120 –> 00:05:50,479
تعریف چند ضلعی
160
00:05:50,479 –> 00:05:53,360
است، سپس دو کلاس مثلث
161
00:05:53,360 –> 00:05:54,880
و چهارضلعی از آن استخراج می کنیم
162
00:05:54,880 –> 00:05:57,039
در این کلاس ها، متدهای
163
00:05:57,039 –> 00:05:58,880
مخصوص به آنها را اضافه می کنیم،
164
00:05:58,880 –> 00:06:01,360
اجازه دهید ابتدا یک کلاس پایه به نام
165
00:06:01,360 –> 00:06:02,319
چند ضلعی ایجاد کنم.
166
00:06:02,319 –> 00:06:04,160
در ویرایشگر کد من کد قدیمی را حذف می
167
00:06:04,160 –> 00:06:05,520
کنم و می گویم
168
00:06:05,520 –> 00:06:09,039
کلاس چندضلعی
169
00:06:09,039 –> 00:06:11,360
و داخل آن یک تابع init
170
00:06:11,360 –> 00:06:12,560
171
00:06:12,560 –> 00:06:14,319
def underscore unde ایجاد می کنم. rscore init
172
00:06:14,319 –> 00:06:15,759
underscore underscore
173
00:06:15,759 –> 00:06:18,319
و pass in self و من در
174
00:06:18,319 –> 00:06:18,880
اضلاع
175
00:06:18,880 –> 00:06:21,600
به عنوان آرگومان دوم می گذرانم، بنابراین در اینجا می گویم
176
00:06:21,600 –> 00:06:23,280
خود dot sides
177
00:06:23,280 –> 00:06:26,800
برابر است با اضلاع
178
00:06:26,800 –> 00:06:28,720
تا کار آسان تر شود، ما
179
00:06:28,720 –> 00:06:31,199
طرفین لیستی را نسبت می دهیم که شامل
180
00:06:31,199 –> 00:06:34,400
تمام اضلاع باشد. حالا یک چند ضلعی
181
00:06:34,400 –> 00:06:36,560
اجازه دهید یک روش اطلاعات نمایش اضافه کنم تا
182
00:06:36,560 –> 00:06:39,039
اطلاعات مربوط به این چند ضلعی نمایش داده شود،
183
00:06:39,039 –> 00:06:42,080
بنابراین در اینجا می گویم اطلاعات زیرخط نمایش def به
184
00:06:42,080 –> 00:06:44,960
185
00:06:44,960 –> 00:06:46,960
طور پیش فرض پارامتر self را نیز می گیرد
186
00:06:46,960 –> 00:06:51,120
و در داخل می گویم چاپ یک چند
187
00:06:51,120 –> 00:06:55,360
ضلعی یک شکل دو بعدی
188
00:06:55,360 –> 00:06:59,360
است با
189
00:06:59,360 –> 00:07:03,280
خطوط مستقیم اجازه دهید یک روش محیطی نیز اضافه کنم
190
00:07:03,280 –> 00:07:04,639
که محیط این
191
00:07:04,639 –> 00:07:05,599
چند ضلعی را پیدا کند
192
00:07:05,599 –> 00:07:07,599
به یاد داشته باشید که محیط مجموع
193
00:07:07,599 –> 00:07:09,039
همه ضلع های یک چند ضلعی است،
194
00:07:09,039 –> 00:07:11,120
بنابراین در ویرایشگر کد من روش محیطی را تعریف می
195
00:07:11,120 –> 00:07:13,360