کلاس ها در پایتون
کلاس ها در پایتون
ما قبلا دو مدل برنامه نویسی را مورد بررسی قرار داده ایم - حلقه های تکرار (با استفاده از statementها ، حلقه ها و توابع به صورت زیرموضع ) و توابع گرا (با استفاده از توابع خالص، توابع مرتبه بالاتر و بازگشتی). یکی دیگر از مدل های بسیار محبوب برنامه نویسی شی گرا (Object Oriented Programming یا OOP) است. object ها با استفاده از کلاس ها ایجاد می شوند که در واقع نقطه کانونی OOP هستند.کلاس توضیح می دهد که چه جایی خواهد بود، اما جدا از خودش است. به عبارت دیگر، یک کلاس می تواند به عنوان یک طرح، توضیح یا تعریف object باشد.شما می توانید از همان کلاس به عنوان یک طرح برای ایجاد اشیاء مختلف استفاده کنید. کلاس ها با استفاده از کلاس کلمه کلیدی و یک بلوک تخصیص داده ساخته شده است که شامل روش های کلاس است (که توابع هستند). در زیر نمونه ای از یک کلاس ساده و object آن است.
class Cat:
def __init__(self, color, legs):
self.color = color
self.legs = legs
felix = Cat("ginger", 4)
rover = Cat("dog-colored", 4)
stumpy = Cat("brown", 3)
نکته:این کد یک کلاس را به نام گربه تعریف می کند که دو ویژگی دارد: رنگ و پاها.سپس از کلاس برای ایجاد سه object جداگانه استفاده می شود.
متد __int__
روش __init__ مهمترین روش در یک کلاس است. این نام هنگامی ،راخوانی می شود که یک نمونه (object) از کلاس با استفاده از نام کلاس به عنوان یک تابع ایجاد می شود. همه متدها باید خود را به عنوان اولین پارامتر خود داشته باشند، اگر چه به صراحت آن را نپذیرفته است، Python استدلال خود را به لیست اضافه می کند؛ شما لازم نیست که آن را در زمانی که روش را فراخوانی می کنید وارد کنید. در یک تعریف متد، خود به مثال فراخوانی متد اشاره دارد. نمونه هایی از یک کلاس دارای صفات می باشند که قطعات داده ای هستند که در ارتباط با آنها قرار دارند. در این مثال، نمونه گربه دارای ویژگی های رنگ و پاها است. اینها را می توان با قرار دادن یک نقطه و نام ویژگی بعد از یک نمونه مشاهده کرد. در روش __init__
صفت self.attribute
به این ترتیب می تواند برای تعیین مقدار اولیه صفات نمونه مورد استفاده قرار گیرد. مثال:
class Cat:
def __init__(self, color, legs):
self.color = color
self.legs = legs
felix = Cat("ginger", 4)
print(felix.color)
خروجی:
>>>
ginger
>>>
نکته:در مثال بالا، متد __init__
دو استدلال را به دست می آورد و آنها را به صفات شیء اختصاص می دهد. متد __init__
سازنده کلاس نامیده می شود.
متد ها Methods
کلاس ها می توانند متدهای دیگری تعریف کنند تا قابلیت های آنها را اضافه کند.به یاد داشته باشید که تمام متدها باید خود را به عنوان اولین پارامتر خود داشته باشند.این متدها با استفاده از همان نحو به عنوان نقطه به عنوان ویژگی ها قابل دسترسی است. مثال:
class Dog:
def __init__(self, name, color):
self.name = name
self.color = color
def bark(self):
print("Woof!")
fido = Dog("Fido", "brown")
print(fido.name)
fido.bark()
خروجی:
>>>
Fido
Woof!
>>>
کلاس ها همچنین می توانند دارای ویژگی های کلاس باشند که توسط اختصاص متغیرها در داخل کلاس ایجاد می شوند. اینها را می توان از نمونه های کلاس یا کلاس به دست آورد. مثال:
class Dog:
legs = 4
def __init__(self, name, color):
self.name = name
self.color = color
fido = Dog("Fido", "brown")
print(fido.legs)
print(Dog.legs)
خروجی:
>>>
4
4
>>>
نکته:خصیصه کلاس ها توسط همه نمونه های کلاس به اشتراک گذاشته می شود. تلاش برای دسترسی به یک ویژگی از یک نمونه که تعریف نشده است، یک AttributeError را ایجاد می کند. این نیز زمانی اعمال می شود که شما با یک روش نامشخص فراخوانی کنید. به عنوان مثال:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
rect = Rectangle(7, 8)
print(rect.color)
خروجی:
>>>
AttributeError: 'Rectangle' object has no attribute 'color'
>>>
با سلام // ضمن تشکر از تلاش ارزنده شما در امر آموزش و تهیه فیلم ها .... اما متاسفانه اصلا کیفیت تصاویر خوب نبوده و قابل استفاده نیست ...و علت آن فقط و فقط سفید بودن رنگ پس زمینه است ...شاید شما چشمان سالم و دید قوی دارید ، اما همه مخاطبان شما اینگونه نیستند ...اگر همچون دیگر مدرسین ، رنگ پس زمینه را تیره میکردید ، دوره های شما با این سواد و کیفیت تدریس تان فوق العاده عالی میشد .... اما حیف !!!!!
متاسفانه در زمانی که ویدیو ها رو آپلود میکردم خروجی ها بر روی ۷۲۰ قرار داشتن و بعضا کیفیت عالی بودن و فقط مواردی که آپلود میشدن توی سرویس دهنده ها به خاطر کم حجم شدن و فشرده سازی از کیفیت خیلی کم میشد برای همینم دوره های پیشرفته با ۱۰۸۰ آپلود شدن تا بهتر باشن. از بابت دوره هم باید بگم که خوب زمان خیلی زیادی ازش گذشته و قطعا نیاز به یک دوره جدید هستش و به محض اتمام دوره های جنگو در مکتبخونه دوباره پایتون رو از اول با متد جدید ضبط می کنم
ممنونم مهندس ...خدا قوت
بودن شما باعث دلگرمی برای برنامه نویس های تازه کاری مثل من......
خواهش می کنم امیدوارم که مفید واقع بشه
سلام بنده تا حدودی سر بسته متوجه شده بودم ولی نحوه اموزشتون دیگه کاملش کرد ممنون.
از همین صفحه باید کاراتونو دنبال کنم یا جای خاصی دارین شما؟؟
اینجا بیشتر آموزش ها هستش ولی صفحه لینکدین بنده هم هستش برای دیدن پروژه هایی که انجام میدم
اقای داداش واقعا دمت گرم که وقت گذاشتی من از اول تمام ویدیو های شما رو دیدم ازتون ممنونم وهمیشه ارزوی سلامتی رو براتون دارم همین ترتیب با این نشاط برید جلو ما هم در این راستاحمایتتون میکنیم
ممنونم لطف دارید
Excellent, BIG THANK YOU!
no problem
واقعا عالی بود خیلی ممنون که رایگان
خواهش می کنم امیدوارم مفید واقع بشه
عالی بود. ممنون که این آموزش های مفید رو رایگان منتشر میکنید.
خواهش می کنم امیدوارم مفید واقع بشن
عالی بود
عالی و آموزنده بود. انشاالله مطالب بیشتری ازتون یاد بگیریم
خواهش می کنم امیدوارم مفید واقع بشه