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

  • مدرس: علی بیگدلی
  • تاریخ انتشار: 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'
>>>
ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
13دیدگاه
  • محمد عابدینی
    1 month ago

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

    • علی بیگدلی
      2 weeks, 6 days ago

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

  • محمد باقری
    1 month, 3 weeks ago

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

    • علی بیگدلی
      1 month, 1 week ago

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

  • Vahid
    2 months, 1 week ago

    Excellent, BIG THANK YOU!

    • علی بیگدلی
      2 months, 1 week ago

      no problem

  • Vito
    3 months, 3 weeks ago

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

    • علی بیگدلی
      3 months, 3 weeks ago

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

  • Hannane
    4 months, 2 weeks ago

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

    • علی بیگدلی
      4 months, 2 weeks ago

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

  • سلام امیدارم حالتون خوب باشه
    5 months, 1 week ago

    عالی بود

  • مهدی
    6 months ago

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

    • علی بیگدلی
      6 months ago

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