شی‌گرایی در پایتون (بخش دوم)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 6 مارس 2025
اشتراک گذاری

چندریختی (Polymorphism)


چندریختی (Polymorphism) یکی از اصول مهم برنامه‌نویسی شی‌گرا (OOP) است که اجازه می‌دهد یک متد با نام یکسان در کلاس‌های مختلف رفتار متفاوتی داشته باشد.


مثال ساده از چندریختی:


class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak())

در این مثال، متد speak در هر دو کلاس Dog و Cat وجود دارد ولی خروجی متفاوتی دارد.


متدهای جادویی (Magic Methods)


متدهای جادویی در پایتون متدهایی هستند که با دو آندرلاین (__) در ابتدا و انتها نام‌گذاری می‌شوند. این متدها به کلاس‌ها امکان می‌دهند که به‌طور ویژه در رفتارهای داخلی پایتون شرکت کنند.


چند نمونه از متدهای جادویی:



  • __init__ : سازنده کلاس

  • __str__ : نمایش خوانای کلاس برای کاربران

  • __repr__ : نمایش رسمی کلاس برای دیباگینگ

  • __len__ : مقدار طول یک شیء را مشخص می‌کند


مثال:


class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, {self.age} years old"
def __repr__(self):
return f"Person('{self.name}', {self.age})"
def __len__(self):
return self.age
p = Person("Ali", 25)
print(str(p)) # خروجی: Ali, 25 years old
print(repr(p)) # خروجی: Person('Ali', 25)
print(len(p)) # خروجی: 25

کلاس‌های انتزاعی (Abstract Base Class - ABC)


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


استفاده از ABC:


from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
# animal = Animal() # این کد خطا می‌دهد چون Animal یک کلاس انتزاعی است
dog = Dog()
print(dog.make_sound()) # Woof!

در اینجا Animal یک کلاس انتزاعی است و متد make_sound باید در کلاس‌های فرزند پیاده‌سازی شود.


مدیریت استثناها در OOP


مدیریت استثناها (Exception Handling) در برنامه‌نویسی شی‌گرا کمک می‌کند که برنامه‌ها پایدارتر باشند و در صورت بروز خطاها، از کرش کردن برنامه جلوگیری شود.


مثال مدیریت استثناها در کلاس‌ها:


class Calculator:
def divide(self, a, b):
try:
return a / b
except ZeroDivisionError:
return "Cannot divide by zero!"
calc = Calculator()
print(calc.divide(10, 2)) # 5.0
print(calc.divide(10, 0)) # Cannot divide by zero!

با استفاده از try-except، از بروز خطای تقسیم بر صفر جلوگیری کردیم و یک پیام مناسب نمایش دادیم.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.