
روز ۳۰ آموزش پایتون: متدها و ویژگیها (attributes)
در دنیای برنامه نویسی شیءگرا، آشنایی کامل با ویژگیها (attributes) و متدها (methods) یکی از مهمترین پایهها برای نوشتن برنامههای قابل فهم و قابل توسعه است. ویژگیها دادههای ذخیره شده در شیء هستند و متدها رفتارهای مرتبط با آن شیء را تعریف میکنند. به عبارتی، ویژگیها وضعیت شیء را مشخص میکنند و متدها اعمال و عملکردهای شیء را کنترل میکنند. در پایتون، هر شیء میتواند ویژگیها و متدهای مخصوص خود را داشته باشد و این انعطافپذیری باعث میشود بتوانیم برنامههای پیچیده را به شکل ساختاریافته و منظم بنویسیم.
چرا متدها و ویژگیها اهمیت دارند؟
ویژگیها و متدها اساس encapsulation در برنامهنویسی شیءگرا هستند. با این دو مفهوم، دادهها و رفتارها در یک واحد مشخص و مستقل نگه داشته میشوند و تغییرات برنامه به راحتی کنترل میشوند. بدون متدها و ویژگیها، برنامهها به مجموعهای از توابع پراکنده و دادههای نامرتب تبدیل میشوند که مدیریت و توسعه آنها دشوار است. با تعریف دقیق متدها و ویژگیها، میتوانیم از ایجاد کدهای تکراری جلوگیری کنیم و دسترسی به دادهها را با کنترل بیشتری انجام دهیم، به خصوص زمانی که برنامه بزرگ و پروژه پیچیده میشود.
تعریف ویژگیها در کلاس
ویژگیها معمولاً در متد سازنده کلاس __init__ تعریف میشوند. این ویژگیها میتوانند اطلاعات اصلی شیء را نگه دارند و هنگام ایجاد هر شیء جدید مقداردهی شوند. تعریف ویژگیها بسیار ساده است و با کلیدواژه self انجام میشود که نشاندهنده شیء جاری است.
نمونه کد تعریف ویژگیها:
class User:
def __init__(self, name, age, email):
self.name = name
self.age = age
self.email = email
# ایجاد شیء
user1 = User("Ali", 25, "ali@example.com")
print(user1.name)
print(user1.age)
print(user1.email)در این مثال، هر شیء User دارای سه ویژگی است: name، age و email. با استفاده از self، این ویژگیها به شیء خاص اختصاص داده میشوند و هر شیء مستقل از دیگری است.
متدها و استفاده از ویژگیها
متدها توابعی هستند که در داخل کلاس تعریف میشوند و میتوانند بر ویژگیها اثر بگذارند یا اطلاعات را پردازش کنند. متدها میتوانند ویژگیها را تغییر دهند، محاسبات انجام دهند یا خروجی مناسب ارائه دهند. هر متد حداقل یک پارامتر به نام self دارد که نشاندهنده شیء جاری است و امکان دسترسی به ویژگیها و سایر متدها را فراهم میکند.
نمونه کد تعریف متد و استفاده از ویژگیها:
class User:
def __init__(self, name, age, email):
self.name = name
self.age = age
self.email = email
def display_info(self):
print(f"نام: {self.name}, سن: {self.age}, ایمیل: {self.email}")
def birthday(self):
self.age += 1
print(f"تولد مبارک {self.name}! اکنون سن شما {self.age} سال است.")
user1 = User("Ali", 25, "ali@example.com")
user1.display_info()
user1.birthday()در این مثال، متد birthday ویژگی age را تغییر میدهد و نشان میدهد که متدها میتوانند مستقیماً روی ویژگیهای شیء اثر بگذارند و رفتار پویا ایجاد کنند.
ویژگیها و متدهای خصوصی
گاهی نیاز داریم برخی ویژگیها یا متدها فقط در داخل کلاس قابل دسترسی باشند و از بیرون قابل تغییر نباشند. پایتون این قابلیت را با پیشوند _ یا __ فراهم میکند که نشاندهنده خصوصی بودن آنها است. این قابلیت برای محافظت از دادهها و جلوگیری از تغییرات ناخواسته بسیار مفید است.
نمونه کد متد خصوصی:
class User:
def __init__(self, name, age):
self.name = name
self.__age = age # خصوصی
def display_age(self):
print(f"سن کاربر: {self.__age}")
user1 = User("Ali", 25)
user1.display_age()
# print(user1.__age) # خطا میدهددر این مثال، ویژگی __age فقط از طریق متد display_age قابل مشاهده است و از دسترسی مستقیم جلوگیری میکند.
جمعبندی کاربرد متدها و ویژگیها
در این درس یاد گرفتیم که ویژگیها دادههای هر شیء را نگه میدارند و متدها رفتارهای مرتبط با آن را کنترل میکنند. با تعریف درست ویژگیها و متدها میتوانیم برنامهها را منظم، قابل توسعه و امن بنویسیم. تمرین پیشنهادی این است که کلاسهای بیشتری بسازیم، متدهای مختلف برای ویرایش، محاسبه و نمایش دادهها اضافه کنیم و ویژگیهای خصوصی و عمومی را به کار ببریم تا تسلط کامل روی OOP پیدا کنیم. این مهارتها پایه اصلی پروژههای حرفهای پایتون هستند و برای هر برنامهنویسی ضروریاند.
