کلاسها و شیگرایی در پایتون
تعریف کلاس، ساخت شی، متد __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
- کپسولهسازی (Encapsulation): پنهان کردن دادهها
- وراثت (Inheritance): ارثبری از کلاس دیگر
- چندریختی (Polymorphism): رفتار متفاوت
- انتزاع (Abstraction): پنهان کردن پیچیدگی
خلاصه
| مفهوم | سینتکس |
|---|---|
| کلاس | class Name: |
| سازنده | def __init__(self, ...): |
| ویژگی | self.name = value |
| متد | def method(self, ...): |
| ساخت شی | obj = ClassName(args) |
این مبحث بخشی از دوره آموزش کامل پایتون است.