کلاس در پایتون — ساده و جامع

عکس شاخص کلاس ها و اشیا در پایتون

یک کلاس در پایتون یک الگوی تعریف‌ شده توسط کاربر برای ایجاد اشیا است. این الگو داده‌ها و توابع را با هم ترکیب می‌کند و مدیریت و استفاده از آن‌ها را آسان‌تر می‌کند. وقتی یک کلاس جدید ایجاد می‌کنیم، یک نوع جدید از اشیا تعریف می‌کنیم و می‌توانیم چندین نمونه از این نوع شی بسازیم.در این مقاله، هدف ارائه یک آموزش جامع درباره مفهوم کلاس در پایتون و نحوه استفاده از آن در این زبان است. همچنین، با بهره‌گیری از مثال‌های عملی در پایتون، روش‌های پیاده‌سازی اصول شی‌گرایی با استفاده از کلاس‌ها مورد بررسی قرار می‌گیرد.

مقدمه

کلاس در پایتون ابزاری برای تعریف و ساخت اشیا «objects» هستند که به شما امکان می‌دهند تا ویژگی‌ها «attributes» و متدهای «methods» مختلفی را برای اشیاء خود تعیین کنید. کلاس‌ در پایتون به عنوان الگوهایی برای ساخت اشیاء عمل می‌کنند و با استفاده از آن‌ها می‌توان ساختارهای پیچیده‌تری را در برنامه‌ها پیاده‌سازی کرد. به کمک کلاس‌ها، می‌توان مفاهیم برنامه‌نویسی شی‌گرا «Object-Oriented Programming» را در پایتون پیاده‌سازی کرده و از قابلیت‌هایی مانند وراثت، کپسوله‌سازی و چندریختی بهره برد. ایجاد کلاس‌ها به برنامه‌نویس این امکان را می‌دهد که داده‌ها و رفتارهای مرتبط با آن‌ها را در یک مجموعه منظم و قابل استفاده مجدد سازماندهی کند.

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

# define a class
class Dog:
    sound = "bark"  # class attribute

ایجاد شی در پایتون

برای ایجاد یک شی از یک کلاس در پایتون، ابتدا باید کلاس مورد نظر را تعریف کرده و سپس یک نمونه از آن را ایجاد کنیم. در ادامه، شی‌ای از کلاس Dog ایجاد می‌کنیم:

class Dog:
    sound = "bark" 

# Create an object from the class
dog1 = Dog()

# Access the class attribute
print(dog1.sound)

ویژگی sound که به عنوان ویژگی کلاس تعریف شده است، ویژگی مشترکی است که بین تمامی نمونه‌های کلاس Dog به اشتراک گذاشته می‌شود. این ویژگی می‌تواند مستقیما از طریق هر شی «instance» مانند dog1 دسترسی پیدا کند.

استفاده از تابع ()__init__ در پایتون

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

class Dog:
    species = "Canine"  # Class attribute

    def __init__(self, name, age):
        self.name = name  # Instance attribute
        self.age = age  # Instance attribute
  • class Dog: کلاسی به نام Dog تعریف می‌کند.
  • species: ویژگی کلاس که بین تمام نمونه‌های کلاس مشترک است.
  • __init__ method: ویژگی‌های name و age را هنگام ایجاد شی جدید مقداردهی اولیه می‌کند.

مقداردهی اولیه شی با __init__ در پایتون

class Dog:
    species = "Canine"  # Class attribute

    def __init__(self, name, age):
        self.name = name  # Instance attribute
        self.age = age  # Instance attribute

# Creating an object of the Dog class
dog1 = Dog("Buddy", 3)

print(dog1.name)  # Output: Buddy
print(dog1.species)  # Output: Canine

خروجی:

Buddy
Canine
  • dog1 = Dog(“Buddy”, ۳): یک شی از کلاس Dog ایجاد می‌کند با ویژگی‌های name برابر با «Buddy» و age برابر با ۳.
  • dog1.name: ویژگی نمونه name شی dog1 را دسترسی می‌دهد که در اینجا برابر با «Buddy» است.
  • dog1.species: ویژگی کلاس species را که برای تمامی نمونه‌های کلاس مشترک است، دسترسی می‌دهد.

پارامتر self در پایتون

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

class Dog:
    def bark(self):
        print(self.name)

dog1 = Dog("Buddy", 3)
dog1.bark()
  • self.name: به ویژگی name شی (مثل dog1) که متد را فراخوانی کرده است، اشاره دارد.
  • ()dog1.bark: متد bark را روی شی dog1 اجرا می‌کند.

متد __str__ در پایتون

متد __str__ در پایتون به ما امکان می‌دهد یک نمایش متنی سفارشی برای یک شی تعریف کنیم. به صورت پیش‌فرض، وقتی یک شی چاپ می‌شود یا به رشته تبدیل می‌شود «با استفاده از ()str »، پایتون از پیاده‌سازی پیش‌فرض استفاده می‌کند که معمولا رشته‌ای مانند <__main__.ClassName object at 0x00000123> برمی‌گرداند.

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

    def __str__(self):
        return f"{self.name} is {self.age} years old."  # Correct: Returning a string
      
dog1 = Dog("Buddy", 3)
dog2 = Dog("Charlie", 5)

print(dog1)  
print(dog2)

خروجی:

Buddy is 3 years old.
Charlie is 5 years old.
  • __str__ Implementation: به‌عنوان یک متد در کلاس Dog تعریف شده و با استفاده از پارامتر self به ویژگی‌های نمونه مانند name و age دسترسی پیدا می‌کند.
  • Readable Output: وقتی print(dog1) فراخوانی می‌شود، پایتون به طور خودکار از متد __str__ برای دریافت نمایش متنی شی استفاده می‌کند. در صورت نبود این متد، خروجی به شکل <__main__.Dog object at 0x00000123> خواهد بود.

متغیرهای کلاس و نمونه در پایتون

در پایتون، متغیرهایی که در یک کلاس تعریف می‌شوند می‌توانند متغیرهای کلاس یا متغیرهای نمونه باشند. درک تفاوت بین این دو برای برنامه‌نویسی شی‌گرا بسیار مهم است.

متغیرهای کلاس در پایتون

متغیرهایی که بین تمامی نمونه‌های یک کلاس مشترک هستند. این متغیرها در سطح کلاس تعریف می‌شوند و خارج از هر متد قرار دارند. تمامی اشیا کلاس به یک مقدار از این متغیر دسترسی دارند، مگر اینکه به‌طور صریح برای یک شی تغییر داده شوند.

متغیرهای نمونه در پایتون

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

class Dog:
    # Class variable
    species = "Canine"

    def __init__(self, name, age):
        # Instance variables
        self.name = name
        self.age = age

# Create objects
dog1 = Dog("Buddy", 3)
dog2 = Dog("Charlie", 5)

# Access class and instance variables
print(dog1.species)  # (Class variable)
print(dog1.name)     # (Instance variable)
print(dog2.name)     # (Instance variable)

# Modify instance variables
dog1.name = "Max"
print(dog1.name)     # (Updated instance variable)

# Modify class variable
Dog.species = "Feline"
print(dog1.species)  # (Updated class variable)
print(dog2.species)

خروجی:

Canine
Buddy
Charlie
Max
Feline
Feline
  • متغیر کلاس (species): بین تمامی نمونه‌های کلاس مشترک است. تغییر Dog.species بر روی تمام اشیا تأثیر می‌گذارد زیرا ویژگی خود کلاس است.
  • متغیرهای نمونه (name, age): در متد __init__ تعریف می‌شوند و برای هر نمونه منحصربه‌فرد هستند (مانند dog1.name و dog2.name که متفاوت‌اند).
  • دسترسی به متغیرها: متغیرهای کلاس از طریق نام کلاس (Dog.species) یا یک شی (dog1.species) قابل دسترسی‌اند. متغیرهای نمونه فقط از طریق شی (dog1.name) دسترسی‌پذیرند.
  • به‌روزرسانی متغیرها: تغییر Dog.species تمامی نمونه‌ها را تحت تأثیر قرار می‌دهد. تغییر dog1.name فقط روی dog1 تأثیر دارد و به سایر نمونه‌ها مثل dog2 ربطی ندارد.

نتیجه گیری

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

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


سوالات متداول


کلاس ها و اشیا در پایتون چیست؟

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

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

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

چرا از کلاس در پایتون استفاده می کنیم؟

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

نحوه تعریف کلاس در پایتون چگونه است؟

برای تعریف یک کلاس در پایتون، از کلمه کلیدی class استفاده کرده و نام کلاس را بعد از آن قرار دهید، سپس یک دو نقطه (:) بگذارید. داخل بلوک کلاس، ویژگی‌ها و متدها را تعریف کنید.

یک شی در OOP چیست؟

In Object-Oriented Programming (OOP), an object is a tangible entity that represents a particular instance of a class. It combines data (attributes) and behaviors (methods) specified by the class.

چرا به کلاس ها و اشیا در پایتون نیاز داریم؟

کلاس ها و اشیا در پایتون راهی برای مدل‌سازی موجودات دنیای واقعی و مفاهیم انتزاعی در کد فراهم می‌کنند. آن‌ها سازماندهی کد، درون‌سازی (مخفی‌سازی داده‌ها)، ارث‌ بری (استفاده مجدد از کد) و چندریختی (بازنویسی متدها) را ترویج می‌دهند و باعث می‌شوند سیستم‌های پیچیده راحت‌تر قابل مدیریت و گسترش باشند.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 0 از 0 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks مجله پی استور w3schools programiz

دیدگاه‌ خود را بنویسید

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



برچسب‌ها:
پایتون


پیمایش به بالا