مقدمهای بر کلاسها و برنامهنویسی شیءگرا در پایتون
در برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP)، دادهها و رفتارهای مرتبط با آنها در قالب واحدهای منطقی به نام کلاس سازماندهی میشوند. یک کلاس مانند یک قالب یا طرح است که مشخص میکند اشیاء (یا object) چگونه باید ساخته شوند و چه ویژگیها و رفتارهایی دارند.
کلاس چیست؟
کلاس در واقع یک تعریف یا دستورالعمل است که به کامپیوتر میگوید چگونه اشیاء ساخته شوند. به تنهایی کلاس حافظهای اشغال نمیکند، بلکه مانند یک نقشه است. وقتی یک کلاس را instance یا شیء (object) میسازیم، یک فضای مستقل در حافظه به آن اختصاص مییابد که اطلاعات مربوط به آن شیء در آن ذخیره میشود.
یک کلاس خالی و اشیاء آن
اگر یک کلاس بدون هیچ خصوصیت یا متدی تعریف کنیم، پایتون به ما اجازه میدهد اشیاء را از آن بسازیم و هر شیء یک آدرس مستقل در حافظه خواهد داشت.
class Empty:
pass
obj1 = Empty()
obj2 = Empty()
print(obj1) # خروجی: چیزی شبیه به <__main__.Empty object at 0x...>
print(obj2) # خروجی: آدرس حافظه متفاوت برای شیء دوم
در اینجا، Empty
یک کلاس خالی است. obj1
و obj2
دو شیء مجزا از این کلاس هستند که هرکدام آدرس حافظه خاص خود را دارند.
Attribute چیست؟
ویژگیها (Attributes) اطلاعاتی هستند که به هر شیء اختصاص داده میشوند، مانند مشخصات یا دادههای مرتبط با آن شیء. برای نمونه، اگر یک کلاس Car
داشته باشیم، ویژگیهایی مثل رنگ یا مدل ممکن است به هر شیء اختصاص یابند.
متد __init__ و مقداردهی اولیه
متد __init__
به عنوان سازنده کلاس شناخته میشود. این متد هنگام ساخت هر شیء به طور خودکار فراخوانی میشود و برای مقداردهی اولیه ویژگیهای آن شیء استفاده میشود. این متد اولین پارامتر خود را که معمولاً self
نام دارد دریافت میکند که به شیء جاری اشاره میکند.
مثال بدون __init__
و مقداردهی دستی ویژگیها:
class Car:
pass
car1 = Car()
car1.color = "red" # به صورت دستی ویژگی اضافه کردیم
car2 = Car()
car2.color = "blue"
print(car1.color) # خروجی: red
print(car2.color) # خروجی: blue
اما این کار به صورت دستی و پراکنده است. استفاده از __init__
به ما امکان میدهد مقداردهی اولیه را هنگام ساخت شیء انجام دهیم:
class Car:
def __init__(self, color, model):
self.color = color # مقداردهی ویژگی color
self.model = model # مقداردهی ویژگی model
car1 = Car("red", "Sedan")
car2 = Car("blue", "SUV")
print(car1.color, car1.model) # خروجی: red Sedan
print(car2.color, car2.model) # خروجی: blue SUV
خلاصه مفاهیم اصلی
- کلاس (Class): تعریف قالب یا طرح برای ایجاد اشیاء.
- شیء (Object): نمونهای از یک کلاس با فضای اختصاصی در حافظه.
- ویژگی (Attribute): دادهها و مشخصات مرتبط با هر شیء.
- متد __init__: سازنده کلاس که هنگام ساخت هر شیء اجرا شده و ویژگیها را مقداردهی اولیه میکند.
- self: پارامتر اول همه متدهای کلاس که به خود شیء جاری اشاره دارد.