021-88881776

آموزش کلاس ها در پایتون

آموزش کلاس ها در پایتون، کلاس‌ها و اشیاء از مفاهیم اصلی برنامه‌نویسی شیءگرا (OOP) هستند که در پایتون به صورت گسترده استفاده می‌شوند. کلاس‌ها به عنوان قالب‌هایی برای ایجاد اشیاء عمل می‌کنند و اشیاء نمونه‌هایی از این قالب‌ها هستند.

1. معرفی کلاس‌ها و اشیاء در پایتون

1.1 تعریف کلاس

برای تعریف یک کلاس در پایتون از کلمه کلیدی class استفاده می‌شود. یک کلاس می‌تواند شامل متدها (توابع داخل کلاس) و ویژگی‌ها (متغیرهای داخل کلاس) باشد.

مثال ساده:

class Person:
    # سازنده کلاس
    def __init__(self, name, age):
        self.name = name  # ویژگی name
        self.age = age    # ویژگی age

    # متد معرفی
    def introduce(self):
        print(f"سلام، من {self.name} هستم و {self.age} سال دارم.")

 

1.2 ایجاد اشیاء

برای ایجاد یک شیء از یک کلاس، کافی است نام کلاس را به همراه پارامترهای لازم فراخوانی کنید.

مثال:

# ایجاد یک شیء از کلاس Person
person1 = Person("علی", 25)

# دسترسی به ویژگی‌ها
print(person1.name)  # خروجی: علی
print(person1.age)   # خروجی: 25

# فراخوانی متد
person1.introduce()  # خروجی: سلام، من علی هستم و 25 سال دارم.

 

1.3 ویژگی‌ها (Attributes)

ویژگی‌ها متغیرهایی هستند که به یک شیء تعلق دارند. این ویژگی‌ها می‌توانند در متد سازنده (__init__) تعریف شوند یا به صورت مستقیم به شیء اضافه شوند.

مثال:

person2 = Person("زهرا", 30)

# اضافه کردن ویژگی جدید به شیء
define_attribute(person2, "job", "مهندس")
print(person2.job)  # خروجی: مهندس

 

1.4 متدها (Methods)

متدها توابعی هستند که در داخل کلاس تعریف می‌شوند و می‌توانند برای انجام عملیات مختلف روی اشیاء استفاده شوند. متدها همیشه باید پارامتر self را به عنوان اولین آرگومان بپذیرند.

مثال:

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

    def perimeter(self):
        return 2 * 3.14 * self.radius

# ایجاد شیء از کلاس Circle
circle1 = Circle(5)
print(circle1.area())       # خروجی: 78.5
print(circle1.perimeter())  # خروجی: 31.4

 

1.5 وراثت (Inheritance)

وراثت به شما امکان می‌دهد تا یک کلاس جدید را بر اساس یک کلاس موجود تعریف کنید. این ویژگی باعث می‌شود تا کدهای تکراری کاهش یابد.

مثال:

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} صدایی تولید می‌کند.")

class Dog(Animal):
    def speak(self):
        print(f"{self.name} می‌گوید: هاپ هاپ!")

# ایجاد اشیاء از کلاس‌های Animal و Dog
animal = Animal("حیوان")
animal.speak()  # خروجی: حیوان صدایی تولید می‌کند.

dog = Dog("سگی")
dog.speak()     # خروجی: سگی می‌گوید: هاپ هاپ!

 

2. نحوه تعریف کلاس ها

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

کلاس‌ها در پایتون ابزارهایی برای تعریف قالب‌های داده‌ای سفارشی هستند که ویژگی‌ها (متغیرها) و رفتارها (متدها) را در بر می‌گیرند. ساختار کلی تعریف یک کلاس به صورت زیر است:

class ClassName:
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2

    def method_name(self):
        # عملیات مربوط به این متد
        pass

توضیحات:

  1. کلمه کلیدی class: برای تعریف کلاس استفاده می‌شود.
  2. نام کلاس: باید با حرف بزرگ شروع شود و نام‌گذاری معمولاً به صورت CamelCase است.
  3. متد __init__: یک متد خاص است که هنگام ایجاد نمونه‌ای از کلاس، به طور خودکار اجرا می‌شود و معمولاً برای مقداردهی اولیه ویژگی‌ها استفاده می‌شود.
  4. ویژگی‌ها: متغیرهایی هستند که در متد __init__ تعریف می‌شوند و با استفاده از self مشخص می‌شوند.
  5. متدها: توابعی هستند که رفتار کلاس را تعریف می‌کنند.

مثال:

class Car:
    def __init__(self, brand, model, year):
        self.brand = brand
        self.model = model
        self.year = year

    def display_info(self):
        print(f"{self.year} {self.brand} {self.model}")

# ایجاد یک نمونه از کلاس
my_car = Car("Toyota", "Corolla", 2020)

# دسترسی به متدهای کلاس
my_car.display_info()

خروجی:

2020 Toyota Corolla

 

3. ساختار کلاس‌ها، متدها و خصوصیات

3.1 ساختار کلاس‌ها در پایتون

کلاس‌ها در پایتون برای تعریف قالب‌های داده‌ای و رفتارهای آن‌ها استفاده می‌شوند. ساختار کلی کلاس به شکل زیر است:

class ClassName:
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2

    def method_name(self):
        # عملیات مربوط به این متد
        pass

مثال ساده:

class Animal:
    def __init__(self, species, sound):
        self.species = species
        self.sound = sound

    def make_sound(self):
        return f"The {self.species} says {self.sound}!"

cat = Animal("cat", "meow")
dog = Animal("dog", "woof")

print(cat.make_sound())  # خروجی: The cat says meow!
print(dog.make_sound())  # خروجی: The dog says woof!

 

3.2 خصوصیات (Attributes)

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

مثال برای خصوصیات:

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

person1 = Person("Ali", 25)
person2 = Person("Zahra", 30)

print(person1.name)  # خروجی: Ali
print(person1.age)   # خروجی: 25
print(person2.name)  # خروجی: Zahra
print(person2.age)   # خروجی: 30

 

3.3 متدها (Methods)

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

مثال برای متدها:

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def calculate_area(self):
        return 3.14 * self.radius ** 2

    def calculate_circumference(self):
        return 2 * 3.14 * self.radius

circle1 = Circle(5)
print(circle1.calculate_area())          # خروجی: 78.5
print(circle1.calculate_circumference()) # خروجی: 31.400000000000002

 

3.4 انواع متدها

  1. متدهای نمونه (Instance Methods): این متدها به خصوصیات نمونه دسترسی دارند و با self مشخص می‌شوند.
  2. متدهای کلاس (Class Methods): با دکوراتور @classmethod تعریف می‌شوند و به کل کلاس دسترسی دارند. اولین آرگومان آن‌ها cls است.
  3. متدهای ایستا (Static Methods): با دکوراتور @staticmethod تعریف می‌شوند و نیازی به self یا cls ندارند.

مثال برای انواع متدها:

class Math:
    @staticmethod
    def add(x, y):
        return x + y

    @classmethod
    def pi_value(cls):
        return 3.14

    def multiply(self, x, y):
        return x * y

print(Math.add(3, 5))       # خروجی: 8
print(Math.pi_value())      # خروجی: 3.14
math_instance = Math()
print(math_instance.multiply(4, 6))  # خروجی: 24

مثال جامع:

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance

    def deposit(self, amount):
        self.balance += amount
        print(f"{amount} تومان به حساب اضافه شد. موجودی فعلی: {self.balance}")

    def withdraw(self, amount):
        if amount > self.balance:
            print("موجودی کافی نیست.")
        else:
            self.balance -= amount
            print(f"{amount} تومان برداشت شد. موجودی فعلی: {self.balance}")

    def display_balance(self):
        return f"موجودی حساب {self.owner}: {self.balance} تومان"

account = BankAccount("Sara", 1000)
account.deposit(500)   # خروجی: 500 تومان به حساب اضافه شد. موجودی فعلی: 1500
account.withdraw(2000) # خروجی: موجودی کافی نیست.
account.withdraw(300)  # خروجی: 300 تومان برداشت شد. موجودی فعلی: 1200
print(account.display_balance()) # خروجی: موجودی حساب Sara: 1200 تومان

 

4. وراثت و چندریختی

4.1 وراثت (Inheritance) در پایتون

وراثت یکی از مفاهیم اصلی برنامه‌نویسی شیءگرا است که به شما اجازه می‌دهد یک کلاس جدید ایجاد کنید که ویژگی‌ها و رفتارهای یک کلاس دیگر را به ارث می‌برد. این قابلیت به کاهش کد تکراری و افزایش قابلیت استفاده مجدد کمک می‌کند.

 

4.2 ساختار کلی وراثت:

class ParentClass:
    def __init__(self, attribute):
        self.attribute = attribute

    def parent_method(self):
        print("This is a method in the parent class")

class ChildClass(ParentClass):
    def __init__(self, attribute, additional_attribute):
        super().__init__(attribute)
        self.additional_attribute = additional_attribute

    def child_method(self):
        print("This is a method in the child class")

مثال برای وراثت:

class Animal:
    def __init__(self, name):
        self.name = name

    def make_sound(self):
        print("Some generic animal sound")

class Dog(Animal):
    def make_sound(self):
        print("Woof Woof")

class Cat(Animal):
    def make_sound(self):
        print("Meow")

# استفاده از کلاس‌ها
animal = Animal("Generic Animal")
animal.make_sound()  # خروجی: Some generic animal sound

dog = Dog("Buddy")
dog.make_sound()  # خروجی: Woof Woof

cat = Cat("Kitty")
cat.make_sound()  # خروجی: Meow

 

4.3 چندریختی (Polymorphism) در پایتون

چندریختی به این معناست که یک متد یا عملیات می‌تواند در کلاس‌های مختلف رفتارهای متفاوتی داشته باشد. این مفهوم به برنامه‌نویسان اجازه می‌دهد کدهای انعطاف‌پذیرتری بنویسند.

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

class Shape:
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

# استفاده از کلاس‌ها
shapes = [Rectangle(3, 4), Circle(5)]
for shape in shapes:
    print("Area:", shape.area())

 

خروجی:

Area: 12
Area: 78.5

 

آموزش کلاس ها در پایتون

دیدگاه های شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *