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

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

شی‌گرایی (Object-Oriented Programming - OOP) یکی از پارادایم‌های برنامه‌نویسی است که در پایتون به‌طور گسترده استفاده می‌شود. در این روش، برنامه به اجزای کوچکتری به نام کلاس (Class) و شیء (Object) تقسیم می‌شود که هر کدام ویژگی‌ها و رفتارهای خاص خود را دارند. این ساختار باعث خوانایی بهتر کد، توسعه‌پذیری بیشتر و کدنویسی بهینه‌تر می‌شود.




کلاس و شیء (Objects & Classes)


در پایتون، کلاس (Class) به عنوان یک قالب یا نقشه‌ی اولیه برای ایجاد اشیاء (Objects) استفاده می‌شود. شیء (Object) نمونه‌ای از کلاس است که می‌تواند داده‌ها و رفتارهای مشخصی داشته باشد.


تعریف یک کلاس در پایتون


class Person:
pass

این یک کلاس ساده است که هیچ ویژگی خاصی ندارد. برای ایجاد یک شیء از این کلاس، کافی است آن را صدا بزنیم:


p1 = Person()
p2 = Person()

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


افزودن ویژگی‌ها و متدها به کلاس


ویژگی‌ها (Attributes) متغیرهایی هستند که به هر شیء اختصاص داده می‌شوند و متدها (Methods) توابعی هستند که درون کلاس تعریف می‌شوند و رفتار اشیاء را مشخص می‌کنند.


class Person:
    def __init__(self, name, age):
self.name = name # ویژگی‌ها
self.age = age

def introduce(self):
print(f"سلام، من {self.name} هستم و {self.age} سال دارم.")
# ایجاد اشیاء از کلاس
p1 = Person("علی", 25)
p2 = Person("سارا", 30)

# استفاده از متدها
p1.introduce()
p2.introduce()

خروجی:


سلام، من علی هستم و 25 سال دارم.
سلام، من سارا هستم و 30 سال دارم.

در اینجا متد __init__ به عنوان سازنده (Constructor) وظیفه مقداردهی اولیه ویژگی‌های شیء را بر عهده دارد.




ویژگی‌ها (Attributes) و متدها (Methods)


در پایتون، دو نوع ویژگی داریم:



  • ویژگی‌های نمونه (Instance Attributes): که برای هر شیء به طور مستقل تعریف می‌شوند.

  • ویژگی‌های کلاس (Class Attributes): که بین تمام اشیاء مشترک هستند.


ویژگی‌های نمونه


class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def show_info(self):
print(f"خودرو: {self.brand} {self.model}")
car1 = Car("BMW", "X5")
car2 = Car("Toyota", "Corolla")
car1.show_info()
car2.show_info()

ویژگی‌های کلاس


class Car:
wheels = 4 # ویژگی کلاس که برای همه اشیاء یکسان است
def __init__(self, brand, model):
self.brand = brand
self.model = model
def show_info(self):
print(f"خودرو: {self.brand} {self.model} - تعداد چرخ‌ها: {Car.wheels}")
car1 = Car("BMW", "X5")
car2 = Car("Toyota", "Corolla")
car1.show_info()
car2.show_info()



وراثت (Inheritance)


وراثت (Inheritance) یکی از مهم‌ترین ویژگی‌های شی‌گرایی است که امکان ایجاد کلاس‌های جدید از کلاس‌های موجود را فراهم می‌کند. با استفاده از وراثت، می‌توان بدون نیاز به نوشتن مجدد کد، ویژگی‌ها و متدهای یک کلاس را به کلاس‌های دیگر منتقل کرد.


تعریف وراثت در پایتون


class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
print("این حیوان صدایی تولید می‌کند.")
# کلاس جدید که از کلاس Animal ارث‌بری می‌کند
class Dog(Animal):
def make_sound(self):
print("هاپ هاپ!")
class Cat(Animal):
def make_sound(self):
print("میو میو!")
# استفاده از کلاس‌ها
animal = Animal("حیوان")
dog = Dog("سگ")
cat = Cat("گربه")
animal.make_sound()
dog.make_sound()
cat.make_sound()

خروجی:


این حیوان صدایی تولید می‌کند.
هاپ هاپ!
میو میو!

در اینجا، کلاس Dog و Cat از کلاس Animal ارث‌بری کرده‌اند اما متد make_sound را بازنویسی (Override) کرده‌اند تا رفتار مخصوص به خود را داشته باشند.


وراثت چندگانه (Multiple Inheritance)


پایتون از وراثت چندگانه نیز پشتیبانی می‌کند، یعنی یک کلاس می‌تواند از چندین کلاس دیگر ارث‌بری کند:


class A:
def method_a(self):
print("متد A")
class B:
def method_b(self):
print("متد B")
class C(A, B):
pass
c = C()
c.method_a()
c.method_b()
خروجی:


متد A
متد B



جمع‌بندی


در این جزوه، مفاهیم اصلی شی‌گرایی در پایتون را بررسی کردیم:

✅ کلاس و شیء: ایجاد و استفاده از کلاس‌ها و اشیاء

✅ ویژگی‌ها و متدها: ویژگی‌های نمونه و کلاس + متدهای مختلف

✅ وراثت: ایجاد کلاس‌های جدید از کلاس‌های موجود + بازنویسی متدها + وراثت چندگانه



نظرات (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.