شیگرایی (Object-Oriented Programming - OOP) یکی از پارادایمهای برنامهنویسی است که در پایتون بهطور گسترده استفاده میشود. در این روش، برنامه به اجزای کوچکتری به نام کلاس (Class) و شیء (Object) تقسیم میشود که هر کدام ویژگیها و رفتارهای خاص خود را دارند. این ساختار باعث خوانایی بهتر کد، توسعهپذیری بیشتر و کدنویسی بهینهتر میشود.
در پایتون، کلاس (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) وظیفه مقداردهی اولیه ویژگیهای شیء را بر عهده دارد.
در پایتون، دو نوع ویژگی داریم:
ویژگیهای نمونه
class Car:def __init__(self, brand, model):self.brand = brandself.model = modeldef 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 = brandself.model = modeldef 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) یکی از مهمترین ویژگیهای شیگرایی است که امکان ایجاد کلاسهای جدید از کلاسهای موجود را فراهم میکند. با استفاده از وراثت، میتوان بدون نیاز به نوشتن مجدد کد، ویژگیها و متدهای یک کلاس را به کلاسهای دیگر منتقل کرد.
تعریف وراثت در پایتون
class Animal:def __init__(self, name):self.name = namedef 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
در این جزوه، مفاهیم اصلی شیگرایی در پایتون را بررسی کردیم:
✅ کلاس و شیء: ایجاد و استفاده از کلاسها و اشیاء
✅ ویژگیها و متدها: ویژگیهای نمونه و کلاس + متدهای مختلف
✅ وراثت: ایجاد کلاسهای جدید از کلاسهای موجود + بازنویسی متدها + وراثت چندگانه