کلاس ها در پایتون

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 24, 2020

کلاس ها در پایتون

ما قبلا دو مدل برنامه نویسی را مورد بررسی قرار داده ایم - حلقه های تکرار (با استفاده از 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'
>>>
ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
17دیدگاه
  • amir hoseinzade
    1 year, 5 months ago

    با سلام // ضمن تشکر از تلاش ارزنده شما در امر آموزش و تهیه فیلم ها .... اما متاسفانه اصلا کیفیت تصاویر خوب نبوده و قابل استفاده نیست ...و علت آن فقط و فقط سفید بودن رنگ پس زمینه است ...شاید شما چشمان سالم و دید قوی دارید ، اما همه مخاطبان شما اینگونه نیستند ...اگر همچون دیگر مدرسین ، رنگ پس زمینه را تیره میکردید ، دوره های شما با این سواد و کیفیت تدریس تان فوق العاده عالی میشد .... اما حیف !!!!!

    • علی بیگدلی
      1 year, 5 months ago

      متاسفانه در زمانی که ویدیو ها رو آپلود میکردم خروجی ها بر روی ۷۲۰ قرار داشتن و بعضا کیفیت عالی بودن و فقط مواردی که آپلود میشدن توی سرویس دهنده ها به خاطر کم حجم شدن و فشرده سازی از کیفیت خیلی کم میشد برای همینم دوره های پیشرفته با ۱۰۸۰ آپلود شدن تا بهتر باشن. از بابت دوره هم باید بگم که خوب زمان خیلی زیادی ازش گذشته و قطعا نیاز به یک دوره جدید هستش و به محض اتمام دوره های جنگو در مکتبخونه دوباره پایتون رو از اول با متد جدید ضبط می کنم

  • amin
    1 year, 8 months ago

    ممنونم مهندس ...خدا قوت
    بودن شما باعث دلگرمی برای برنامه نویس های تازه کاری مثل من......

    • علی بیگدلی
      1 year, 8 months ago

      خواهش می کنم امیدوارم که مفید واقع بشه

  • محمد عابدینی
    1 year, 9 months ago

    سلام بنده تا حدودی سر بسته متوجه شده بودم ولی نحوه اموزشتون دیگه کاملش کرد ممنون.
    از همین صفحه باید کاراتونو دنبال کنم یا جای خاصی دارین شما؟؟

    • علی بیگدلی
      1 year, 9 months ago

      اینجا بیشتر آموزش ها هستش ولی صفحه لینکدین بنده هم هستش برای دیدن پروژه هایی که انجام میدم

  • محمد باقری
    1 year, 10 months ago

    اقای داداش واقعا دمت گرم که وقت گذاشتی من از اول تمام ویدیو های شما رو دیدم ازتون ممنونم وهمیشه ارزوی سلامتی رو براتون دارم همین ترتیب با این نشاط برید جلو ما هم در این راستاحمایتتون میکنیم

    • علی بیگدلی
      1 year, 9 months ago

      ممنونم لطف دارید

  • Vahid
    1 year, 10 months ago

    Excellent, BIG THANK YOU!

    • علی بیگدلی
      1 year, 10 months ago

      no problem

  • Vito
    2 years ago

    واقعا عالی بود خیلی ممنون که رایگان

    • علی بیگدلی
      2 years ago

      خواهش می کنم امیدوارم مفید واقع بشه

  • Hannane
    2 years, 1 month ago

    عالی بود. ممنون که این آموزش های مفید رو رایگان منتشر میکنید.

    • علی بیگدلی
      2 years, 1 month ago

      خواهش می کنم امیدوارم مفید واقع بشن

  • سلام امیدارم حالتون خوب باشه
    2 years, 1 month ago

    عالی بود

  • مهدی
    2 years, 2 months ago

    عالی و آموزنده بود. انشاالله مطالب بیشتری ازتون یاد بگیریم

    • علی بیگدلی
      2 years, 2 months ago

      خواهش می کنم امیدوارم مفید واقع بشه