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