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

تعریف کلاس، ساخت شی، متد __init__، self، متدها و ویژگی‌ها در پایتون

شی‌گرایی چیست؟

شی‌گرایی (Object-Oriented Programming یا OOP) یک روش برنامه‌نویسی است که داده‌ها و توابع مرتبط را در قالب کلاس و شی سازماندهی می‌کند.

کلاس چیست؟

کلاس (Class) مثل یک قالب یا نقشه است که شیءها از روی آن ساخته می‌شوند. مثلاً کلاس «ماشین» ویژگی‌ها و رفتارهای کلی همه ماشین‌ها را تعریف می‌کند.

تعریف کلاس

class Dog:
    pass  # کلاس خالی

متد __init__ (سازنده)

__init__ متد سازنده است که هنگام ساخت شی به‌طور خودکار فراخوانی می‌شود:

class Dog:
    def __init__(self, name, age):
        self.name = name    # ویژگی
        self.age = age      # ویژگی

self چیست؟

self به شی فعلی اشاره دارد. اولین پارامتر هر متد در کلاس باید self باشد.

ساخت شی (Instance)

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# ساخت شی
dog1 = Dog("رکس", 3)
dog2 = Dog("بادی", 5)

print(dog1.name)  # رکس
print(dog2.age)   # 5

متدهای کلاس

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def bark(self):
        print(f"{self.name} هاو هاو!")
    
    def describe(self):
        print(f"این سگ {self.name} است و {self.age} سال دارد")

# استفاده
dog = Dog("رکس", 3)
dog.bark()      # رکس هاو هاو!
dog.describe()  # این سگ رکس است و 3 سال دارد

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

class Dog:
    species = "Canis familiaris"  # ویژگی کلاس (مشترک)
    
    def __init__(self, name):
        self.name = name  # ویژگی شی

dog1 = Dog("رکس")
dog2 = Dog("بادی")

print(dog1.species)  # Canis familiaris
print(dog2.species)  # Canis familiaris (همان مقدار)

تغییر ویژگی‌ها

dog = Dog("رکس", 3)
dog.age = 4  # تغییر
dog.name = "رکس‌خان"
print(dog.name, dog.age)  # رکس‌خان 4

حذف ویژگی یا شی

dog = Dog("رکس", 3)
del dog.age    # حذف ویژگی
del dog        # حذف کامل شی

متد __str__

برای نمایش متنی شی:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Dog(name={self.name}, age={self.age})"

dog = Dog("رکس", 3)
print(dog)  # Dog(name=رکس, age=3)

مثال کامل: کلاس Student

class Student:
    school_name = "لرنینگ سیتی"
    
    def __init__(self, name, student_id):
        self.name = name
        self.student_id = student_id
        self.grades = []
    
    def add_grade(self, grade):
        self.grades.append(grade)
    
    def average(self):
        if not self.grades:
            return 0
        return sum(self.grades) / len(self.grades)
    
    def __str__(self):
        return f"{self.name} ({self.student_id})"

# استفاده
ali = Student("علی", "ST001")
ali.add_grade(18)
ali.add_grade(19)
ali.add_grade(17.5)
print(f"{ali} - میانگین: {ali.average():.2f}")

چهار اصل OOP

  1. کپسوله‌سازی (Encapsulation): پنهان کردن داده‌ها
  2. وراثت (Inheritance): ارث‌بری از کلاس دیگر
  3. چندریختی (Polymorphism): رفتار متفاوت
  4. انتزاع (Abstraction): پنهان کردن پیچیدگی

خلاصه

مفهومسینتکس
کلاسclass Name:
سازندهdef __init__(self, ...):
ویژگیself.name = value
متدdef method(self, ...):
ساخت شیobj = ClassName(args)

این مبحث بخشی از دوره آموزش کامل پایتون است.

ابزارهای مرتبط