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

همانطور که در مقدمات پایتون دیدید ، پایتون یک زبان شئ گرا(object oriented programming) است.

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

کلاس ها یک قالب از اشیا هستند و به هر کلاس یک شئ میگوییم.

هر کلاس ویژگی هایی دارد.

کلاس مثل چی؟

کلاس ها را میتوان با مثالهایی واقعی شرح داد.

میتوان انسان را یک کلاس در نظر گرفت. انسان ها ویژگی هایی مشترک دارد مانند ساختار بدن ، غذا خوردن ، روحیات و...

در اصل این ها ویژگی های کلاس انسان هستند و با این ویژگی ها تریف میشوند.

نحو ایجاد یک کلاس

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

class cars :
    x = 2

نمونه کد بالا یک کلاس با نام cars ایجاد کرد و متغیری در آن تعریف کرد.

نکته: به تورفتگی دستورات در کلاس توجه کنید.

 

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

همانطور که میدانید کلاس ها ویژگی هایی دارند که آنهارا در کلاس ها مینویسیم و آنهارا بررسی میکنیم.

class Cars:

    brand= "BMW"
    country= "germany"
    score = 100

در نمونه کد بالا یک کلاس از ماشین را ساختیم و در آن ماشینی با برند BMW و ویژگی های دیگر آنرا نوشتیم.

برند و کشور و نمره و... همگی ویژگی هایی هستند که برای هر ماشین دیگری قابل استفاده است.

تابع __init__()

در اصل مثال هایی که در بخش های قبل دیدید در واقعیت به تنهایی کاربرد ندارند.

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

class cars:
  def __init__(self, brand, country):
    self.brand= brand
    self.country= country

car1 = cars("BMW", "germany")

print(car1.brand)
  • در مثال بالا یک کلاس با نام cars تعریف کردیم.
  • سپس تابع __init__() را تعریف کردیم.
  • در پارامتر های این تابع ابتدا کلمه self را میگذاریم.
  • سپس پارامتر هایی که بعنوان ویژگی نیاز داریم را مینویسیم.
  • در ادامه از طریق self مقادیر را میسازیم.
  • بیرون از کلاس میتوانیم به کلاس مقدار جدیدی بدهیم و بعد آنرا پرینت کنیم.

تابع __str__()

این تابع باعث میشود که اگر ما خواستیم که از یک ویژگی کلاس پرینت بگیریم و آنرا نمایش دهیم، به طور رشته آنرا نشان دهد.

در دو مثال زیر تفاوت نوشتن این تابع و ننوشتن آنرا مشاهده میکنیم.

class cars:
  def __init__(self, brand, country):
    self.brand= brand
    self.country= country

car1 = cars("BMW", "germany")

print(car1.brand)
class cars:
    def __init__(self, brand, country):
        self.brand= brand
        self.country= country
    def __str__(self):
        return f"{self.brand}({self.country})"
car1 = cars("BMW", "germany")
print(car1)

پارامتر self چیست؟

همانطور که دیدید در ایجاد یک کلاس و استفاده از توابع آن از پارامتر self در ابتدای همه پارامتر ها استفاده میکنیم. اما دلیل اینکار چیست؟

این پارامتر برای دسترسی به متغیر هایی است که متعلق به کلاس ها هستند.

بدون این پارامتر به این متغیر ها دسترسی نداریم.

نکته: اگر متد هیچ آرگومانی نداشته باشد هم نوشتن self الزامی است.

 

آیا حتما باید self باشد؟

شما میتوانید اولین پارامتر تابع خود را به هر نامی بگذارید ولی اصولا آنرا با self نشان میدهند.

  def __init__(hello, brand, country):
    hello.brand= brand
    hello.country= country

 

نکته: بهتر است از خود پارامتر self استفاده کنید یا حداقل از یک نام خوب استفاده کنید که در هنگام خواندن کد ها گیج نشوید.

 

تغییر ویژگی های کلاس

برای تغییر ویژگی های یک کلاس میتوانید مانند نمونه کد زیر عمل کنید.

car1.score= 90

در نمونه کد بالا ویژگی نمره ی car1 به عدد 90 تغییر پیدا کرد.

حذف ویژگی های یک کلاس

برای حذف هر ویژگی مانند نمونه کد زیر عمل میکنیم.

del car1.score

 

نکته: در صورت اجرای این کد با خطا مواجه میشوید زیرا مقدار موردنظر شما حذف شده است.

 

حذف یک شئ

برای حذف کامل یک شئ (نه ویژگی ها) از نمونه کد استفاده میکنیم.

del car1

pass چیست؟

هرگاه یک کلاس خالی داشتید و میخواهید با خطایی رو به رو نشوید از این دستور استفاده میکنیم.

class cars:
  pass

خلاصه درس

  • پایتون زبانی شئ گرا است.
  • هرچه ما در پایتون استفاده کنیم یک شئ است.
  • کلاس ها قالب هایی از اشیا هستند که ویژگی هایی دارند.
  • میتوان ویژگی های یک کلاس را تغییر داد یا حذف کرد.

تمرین

یک کلاس با نام humans ایجاد کنید و در آن یک متغیر بسازید.



مشاهده پاسخ
توسعه دهندگان
علیرضا چمنی