شیءگرایی در پایتون (کلاس‌ها و اشیاء)

شی گرایی در پایتون چیست؟

برنامه‌نویسی شیءگرا یکی از مهم‌ترین مفاهیم در پایتون است که به شما امکان می‌دهد کدهای خود را به صورت ماژولار، خوانا و قابل استفاده مجدد بنویسید. در این مدل، داده‌ها و توابع مرتبط درون کلاس‌ها قرار گرفته و با استفاده از اشیاء قابل استفاده هستند.

کلاس یک الگو یا قالب برای ایجاد اشیاء است. شیء نمونه‌ای از یک کلاس است که دارای ویژگی‌ها و متدها است. برای تعریف یک کلاس در پایتون، از کلمه کلیدی class استفاده می‌شود.

python
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year
def display_info(self):
print(f”خودرو: {self.brand} {self.model}, سال ساخت: {self.year})

برای ایجاد یک شیء از کلاس و استفاده از آن:

python
car1 = Car("Toyota", "Corolla", 2022)
car2 = Car("BMW", "X5", 2023)
car1.display_info()
car2.display_info()

self در متدهای کلاس به شیء فعلی اشاره دارد و برای دسترسی به ویژگی‌ها و متدهای آن استفاده می‌شود.

python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f”سلام، من {self.name} هستم و {self.age} سال دارم.”)

p1 = Person(“علی”, ۳۰)
p1.greet()

وراثت به شما این امکان را می‌دهد که یک کلاس جدید را از یک کلاس دیگر بسازید و ویژگی‌ها و متدهای آن را به ارث ببرید.

python
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
print(“این حیوان صدایی تولید می‌کند.”)

class Dog(Animal):
def make_sound(self):
print(“هاپ هاپ!”)

dog = Dog(“لوسی”)
dog.make_sound()

چندریختی به این معناست که یک متد می‌تواند در کلاس‌های مختلف رفتار متفاوتی داشته باشد.

python
class Bird:
def make_sound(self):
print("جیک جیک!")
class Cat:
def make_sound(self):
print(“میو میو!”)

animals = [Bird(), Cat()]

for animal in animals:
animal.make_sound()

کپسوله‌سازی یعنی محدود کردن دسترسی مستقیم به داده‌های داخلی کلاس، تا از تغییرات ناخواسته جلوگیری شود.

python
class BankAccount:
def __init__(self, balance):
self.__balance = balance
def deposit(self, amount):
self.__balance += amount

def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print(“موجودی کافی نیست.”)

def get_balance(self):
return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())

متدهای کلاس روی خود کلاس اجرا می‌شوند نه روی یک شیء خاص.

python
class Student:
school_name = "مدرسه ایرانیان"
@classmethod
def change_school(cls, new_name):
cls.school_name = new_name

print(Student.school_name)
Student.change_school(“مدرسه جدید”)
print(Student.school_name)

متدهای استاتیک نیازی به self یا cls ندارند و فقط برای انجام کارهای خاص بدون وابستگی به کلاس یا شیء استفاده می‌شوند.

python
class MathUtils:
@staticmethod
def add(a, b):
return a + b
print(MathUtils.add(3, 5))

کلاس‌ها الگوهایی برای ایجاد اشیاء هستند. شیء یک نمونه از کلاس است که دارای ویژگی‌ها و متدها است. self به شیء فعلی اشاره دارد و برای دسترسی به ویژگی‌های کلاس استفاده می‌شود. وراثت به شما اجازه می‌دهد که ویژگی‌ها و متدهای یک کلاس را به کلاس دیگر منتقل کنید. چندریختی امکان استفاده از یک متد مشترک با پیاده‌سازی‌های مختلف را فراهم می‌کند. کپسوله‌سازی داده‌ها را از تغییرات ناخواسته محافظت می‌کند. متدهای کلاس و استاتیک به شما کمک می‌کنند تا عملیات‌هایی را روی کلاس یا به‌طور مستقل انجام دهید.

با یادگیری و استفاده از شیءگرایی، کدهای شما خواناتر، ماژولارتر و قابل توسعه‌تر خواهند شد.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا