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

  • مدرس: علی بیگدلی
  • تاریخ انتشار: 1402/05/03
  • تعداد بازدید: 224

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

ما قبلا دو مدل برنامه نویسی را مورد بررسی قرار داده ایم - حلقه های تکرار (با استفاده از 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'
>>>