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

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

کلاس در پایتون ادامه و تکمیل کننده شی گرایی است که در مطلب مفاهیم اولیه برنامه نویسی پایتون مقدماتی در رابطه با آن صحبت کردیم.

84 بازدید

اگر سوالی دارید، بپرسید!

کلاس در پایتون ادامه و تکمیل کننده شی گرایی است که در مطلب مفاهیم اولیه برنامه نویسی پایتون مقدماتی در رابطه با آن صحبت کردیم.

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

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

در کلاس می توانید مقادیر مختلفی ایجاد و در برنامه از آنها استفاده نماید.

class MyClass:
  x = 5

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

کلاس را با حرف class شروع می کنیم و سپس برای آن نام تعریف می کنیم و در نهایت دو نقطه ساعتی

همانطور که در مثال مشاهده می کنید در بدنه کلاس یک متغییر داریم که به آن مقدار پنج داده ایم.

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

برای اینکه بعدا این صحبت برای شما گنگ نباشد در همان ابتدا آبجکتی ایجاد می کنیم.


تعریف آبجکت

شما می توانید برای کلاس ایجاد شده آبجکت تعریف کنید. برای مثال فرض کنید پوشه ای دارید که کلاس های خود را در آن تعریف کرده اید.

حال می خواهید در قسمت های مختلف از آن کلاس استفاده کنید. برای این کار کافی است از آن کلاس آبجکت بسازید.

p1 = MyClass()
print(p1.x)

در بالا کلاس MyClass ایجاد شد. فرض کنید این کلاس در پوشه ای که کلاس های پروژه قرار دارد نوشته شده.

حال با کد نوشته شده می توانید از خصوصیات آن کلاس استفاده نماید. p1 آبجکتی ایجاد شده از کلاس MyClass است که مقدار x را نمایش می دهد. در اصل x یک ویژگی از کلاس MyClass است که در آبجکت p1 از آن استفاده شده.

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

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


سازنده ها در پایتون

در پایتون توابع کلاس با علامت (__) ساخته می شود زیرا دارای معنای خاصی هستند.

تابع __init__

یکی از توابع محبوب و پرکاربرد تابع __init__ است. این تابع سازنده یا constructor است.

وقتی یک شی از کلاس می سازید می توانید با تابع __init__ آرگومانهای اولیه را تعریف کنید.

  
class Person:

  vname = 'John'
    vage = 20
	
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)

به کلاس فوق توجه کنید. ما از طریق این تابع آرگومانهای اولیه name و age تعریف کردیم.

اما یک نکته وجود دارد vname و vage متغییر های کلاس هستند اما name و age متغییر های شی هستند.

در هنگام ساخت هر گونه آبجکتی از روی کلاس Person اتریبیوت name باید به مقدار معادل پارامتر ورودیِ name منتسب شود.

همچنین دستور self.age = age نیز اتریبیوت age  را برای هر گونه آبجکت ساخته‌شده از روی این کلاس به مقدار پارامتر ورودیِ age منتسب می‌کند. اما self چیست؟

self چیست؟

self باعث فراخوانی پارامترهای هر شی می شود. در مثال فوق متغییر name توسط self فراخوانی شده است.

  1. در ابتدا توسط تابع __init__ name و age را ایجاد کردیم.
  2. توسط self آن را تعریف کردیم.
  3. و در نهایت آن را فراخوانی کردیم.

در فراخوانی متغییر شی نیازی به استفاده از self نیست زیرا پایتون به صورت خودکار آن را شناسایی می کند.

 

همانطور که در مثال فوق مشاهده می کنید می توانید در کلاس، فانکشن تعریف نماید.

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

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

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()

حذف آبجکت ها یا Delete Objects

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

اگر بخواهید یک آبجکت را حذف کنید این عمل مانند کد زیر انجام می شود.

  
del p1

موارد تکمیلی بر تعریف کلاس در پایتون

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

به عبارت دیگر یک نمونه ی اختصاصی یا defined-user که اجازه ی ساخت آبجکت یا نمونه های متعدد از
یک الگو مشترک را می دهد.

هر کلاس واحدی مجزا از اپلیکیشن است که داده هایی را در قالب متغیرهای عضو که attribute نام داشته و عملیات که در قالب method تعریف می شود را دربرمی گیرد.

همان طور که گفته شد، attribute ها اعضایی از کلاس هستند که داده های را در خود نگه می دارند (variable class و variable instance) و متدها نیز رفتارهای کلاس بوده و عملیات خاصی را انجام می دهند.

جهت دسترسی به متدها و متغیرهای عضو کلاس کافی است از عملگر نقطه استفاده  نمایید.

متغیرهای عضو کلاس: متغیری که بین تمامی نمونه های ایجاد شده از کلاس مشترک می باشد، متغیر عضو کلاس یا variable class خوانده می شود.

متغیرهای عضو داخل بدنه ی کلاس اما خارج از حوزه ی اختصاصی متدهای آن کلاس (scope) تعریف می شوند.

Class variable یا متغیرهای عضو کلاس نسبت به متغیرهای نمونه ی ایجاد شده از کالس یا همان variable instance بسیار کم تر مورد استفاده قرار می گیرد.

member Data : یک variable class یا variable instance که داده های مربوط به یک کلاس و آبجکت های ساخته شده از روی آن را دربرمی گیرد.

overloading function : تخصیص و تعریف چندین رفتار برای تابعی یکسان.

به عبارت دیگر، ایجاد چندین نسخه ی مختلف از تابعی با نام یکسان.

حال این عملیاتی که تابع انجام می دهد به نوع آبجکت ها یا آرگومان هایی که شرکت دارند، وابسته است.

variable instance : یک متغیر که داخل حوزه ی اختصاصی یا بدنه ی متد تعریف شده و تنها به نمونه ی جاری از کلاس تعلق دارد.

Inheritance یا وراثت: انتقال ویژگی های یک کلاس به کلاس هایی که از آن مشتق می شوند را در اصطالح Inheritance یا وراثت می گویند.

instance : به یک آبجکت واحد از کلاس در اصطالح Instance گفته می شود.

برای مثال، آبجکتی به نام obj که متعلق به کلاسی به نام Circle می باشد.

در واقع یک نمونه ساخته شده از کلاس Circle که الگویی برای ساخت آبجکت ها می باشد است.

Instantiation نمونه سازی از کلاس : به ساخت آبجکت یا نمونه ای از کلاس مورد نظر Instantiation گویند.

method : همان تابع که داخل بدنه یا حوزه ی اختصاصی کلاس اعالن می شود.

Object : عبارت است از یک نمونه ی یکتا که از روی کلاس مورد نظر ساخته می شود.

یک آبجکت می تواند عالوه بر member data ها متغیرهای عضو کلاس و متغیرهای عضو نمونه ی ایجاد شده از کلاس متد نیز دربرداشته باشد.

overloading Operator : تخصیص چندین رفتار به عملگری یکسان.

به عبارت دقیق تر، یک نمونه ی خاص از چندریختی است که عملگرها می توانند بر اساس آرگومان ها و پارامترهای ورودی پیاده سازی متفاوتی داشته باشد.

منبع » آکادمی ایتروز

مقالات مشابه


معماری MVC چیست؟
سفارشی سازی اسکرول بار با webkit
متدهای آرایه/لیست در پایتون
توابع در پایتون

نظرات (0)

برای ارسال نظر لطفا وارد شوید