کلاس در پایتون (class in python)

کلاس در پایتون
مقدمه:
پایتون یک زبان برنامهنویسی شیءگرا است که قدرتمندی و انعطافپذیری بالایی در استفاده از کلاسها و شیءگرایی ارائه میدهد. کلاسها به عنوان یک قالب برای ایجاد اشیاء و انجام عملیات بر روی آنها عملکرد عمدهای در پایتون دارند. با استفاده از کلاسها، میتوانید یک برنامه پایتون پویا و قابل توسعه ایجاد کنید. در این مقاله، به بررسی کامل کلاسها و شیءگرایی در پایتون پرداخته و نحوه استفاده از آنها را توضیح میدهیم.
ایجاد کلاس:
در پایتون، برای ایجاد یک کلاس، از کلمه کلیدی class استفاده میکنیم. یک کلاس میتواند دارای ویژگیها (متغیرها) و رفتارها (توابع یا متدها) باشد. به عنوان مثال، برای ایجاد یک کلاس ساده برای نمایش یک شخص با نام و سن، میتوانیم به صورت زیر عمل کنیم
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def display(self):
print(f”نام: {self.name}”)
print(f”سن: {self.age}”)
در این مثال، کلاس Person دو ویژگی name و age را داراست که با استفاده از متغیرهای self.name و self.age درون کلاس قابل دسترسی هستند. همچنین، این کلاس دارای یک متد به نام display است که اطلاعات شخص را نمایش میدهد.
ایجاد شیء:
با ایجاد یک کلاس، میتوانیم اشیاء از آن ایجاد کنیم. این عمل به عنوان نمونه سازی یا instantiation شناخته میشود. برای ایجاد یک شیء از کلاس Person که در مثال قبل ایجاد کردهایم، میتوانیم به صورت زیر عمل کنیم:
person1 = Person(“علی”, 25)
person2 = Person(“مریم”, 30)
در اینجا، با استفاده از کلاس Person، دو شیء به نام person1 و person2 ایجاد شدهاند. هر شیء شامل ویژگیهای متغیرها و رفتارهای متدهای کلاس مربوطه است.
دسترسی به ویژگیها و رفتارها:
برای دسترسی به ویژگیها و رفتارها در کلاس، از عملگر دسترسی ‘.’ استفاده میکنیم. به عنوان مثال، برای دسترسی به ویژگیهای name و age یک شیء از کلاس Person، میتوانیم به صورت زیر عمل کنیم:
print(person1.name) # نمایش نام شخص اول
print(person2.age) # نمایش سن شخص دوم
همچنین، برای فراخوانی متدها در کلاس، نیاز است به شیء مربوطه دسترسی پیدا کرده و متد موردنظر را فراخوانی کنیم. به عنوان مثال:
person1.display() # نمایش اطلاعات شخص اول با استفاده از متد display
person2.display() # نمایش اطلاعات شخص دوم با استفاده از متد display
تغییر وضعیت شیء:
یکی از ویژگیهای قوی شیءگرایی در پایتون، قابلیت تغییر وضعیت یک شیء است. با تغییر مقادیر ویژگیها، میتوانیم وضعیت یک شیء را تغییر دهیم. به عنوان مثال:
person1.age = 26 # تغییر سن شخص اول
person2.name = “محمد” # تغییر نام شخص دوم
همچنین، میتوانیم متدها را برای انجام عملیات خاصی بر روی شی ها تغییر دهیم. به عنوان مثال:
person1.display() # نمایش اطلاعات به روز شده شخص اول
person2.display() # نمایش اطلاعات به روز شده شخص دوم
میراثبری (Inheritance):
میراثبری یک ویژگی مهم در برنامهنویسی شیءگرا است که به ما این امکان را میدهد تا از یک کلاس موجود، کلاسهای جدیدی را ایجاد کنیم که ویژگیها و رفتارهای کلاس اصلی را به ارث ببرند و بتوانند آنها را گسترش دهند یا تغییراتی در آنها ایجاد کنند. در پایتون، برای ایجاد کلاسهایی با میراثبری از کلاسهای دیگر، میتوان از نام کلاس اصلی به عنوان پارامتر در تعریف کلاس جدید استفاده کرد. به عنوان مثال، فرض کنید کلاسی به نام Employee با ویژگیهایی مانند name، age و salary و متدهایی مانند display() و calculate_salary() داریم. میتوانیم یک کلاس جدید به نام Manager را تعریف کنیم که از کلاس Employee ارثبری کند و به آن ویژگیها و رفتارهای جدیدی اضافه کند. مثالی از این نوع تعریف کلاس با میراثبری به شکل زیر است:
class Manager(Employee): # کلاس Manager از کلاس Employee ارثبری میکند
def __init__(self, name, age, salary, department):
# وراثت از کلاس Employee
super().__init__(name, age, salary)
self.department = department # ویژگی جدید برای کلاس Manager
def display(self):
# تغییر و تعریف مجدد متد display
print(“نام: “, self.name)
print(“سن: “, self.age)
print(“حقوق: “, self.salary)
print(“بخش: “, self.department)
در این مثال، کلاس Manager از کلاس Employee ارثبری کرده و ویژگی جدید department را به کلاس Manager اضافه کرده است. همچنین طوری که تغییراتی در متد display نیز اعمال شده است تا اطلاعات بخش را نمایش دهد. با ایجاد این کلاس جدید، میتوانیم از ویژگیها و رفتارهای کلاس Employee استفاده کنیم و همچنین ویژگیها و رفتارهای جدیدی برای کلاس Manager تعریف کنیم.
نمونهبرداری (Polymorphism):
نمونهبرداری یک ویژگی دیگر از برنامهنویسی شیءگرا است که به ما این امکان را میدهد تا بتوانیم از یک کلاس با نام یکسان چندین نمونه بسازیم و از آنها با استفاده از همین نام یکسان استفاده کنیم. در پایتون، این ویژگی به خوبی پشتیبانی میشود. به عنوان مثال، فرض کنید کلاسی به نام Shape با متدهایی مانند area() و display() داریم و از این کلاس، دو کلاس دیگر به نامهای Circle و Rectangle ایجاد کردهایم که از کلاس Shape ارثبری کردهاند. این کلاسها، متدهایی با نامهای یکسان برای محاسبه مساحت دارند اما با الگوریتمهای متفاوت. با استفاده از نمونهبرداری، میتوانیم از هر دو کلاس Circle و Rectangle با استفاده از یکسان نام area() استفاده کنیم. مثالی از این نوع نمونهبرداری به شکل زیر است
class Shape:
def area(self):
pass
def display(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
# نمونهبرداری و استفاده از کلاسها
circle = Circle(5)
rectangle = Rectangle(4, 6)
print(“مساحت دایره: “, circle.area()) # استفاده از نام یکسان area() برای دایره print(“مساحت مستطیل: “, rectangle.area()) # استفاده از نام یکسان area() برای مستطیل
در این مثال، از کلاسهای Circle و Rectangle که از کلاس Shape ارثبری کردهاند، نمونهبرداری شده و از نام یکسان area() برای محاسبه مساحت دایره و مستطیل استفاده شده است. این نوع نمونهبرداری به ما این امکان را میدهد که با ایجاد کلاسهای جدید، تغییراتی را در رفتار کلیسها اعمال کرده و از ویژگیهای یکسان آنها استفاده کنیم.
نتیجهگیری:
در این مقاله سئو شده، به بررسی کلاسها و ارثبری در پایتون پرداختیم. با استفاده از کلاسها و ارثبری، میتوانیم ساختار و رفتارهای متنوعی را برای برنامههای پایتون تعریف کرده و کد قابل توسعهتر و قابل استفادهتری ایجاد کنیم. همچنین، از ویژگیهایی مانند پلیمورفیسم و نمونهبرداری در پایتون بهرهبرداری کردیم که امکان استفاده از یکسان نام برای متدها و ویژگیها را به ما میدهد. با این روشها، کدی انعطافپذیر و قابل توسعهتر را میتوانیم پیادهسازی کنیم و در مدیریت پروژههای بزرگ و پیچیدهتر از آنها بهرهبرداری کنیم.