رفتن به مطلب
محفل من
Mostafa

آموزش شی گرایی در Python

پست های پیشنهاد شده

پایتون همواره از ابتدای پیدایش، یکی از زبان های شئ گرا بوده است. به همین دلیل ساخت و استفاده از کلاس ها و اشیاء در آن آسان است. در این مقاله کمک میکنیم که در برنامه نویسی شئ گرا با پایتون به مهارت بالایی برسید. با zerotohero همراه شوید تا قهرمان برنامه نویسی شئ گرا با پایتون شوید!

اگر با برنامه نویسی شئ گرا آشنایی ندارید، در ابتدا مروری کلی بر مفاهیم شئ گرایی خواهیم داشت. سپس به بحث شئ گرایی در پایتون خواهیم پرداخت.

مروری بر شئ گرایی :

کلاس : نمونه اولیه ای است که توسط برنامه نویس نوشته میشود و شامل صفت ها، متدهایی است که هرکدام کار خاصی را انجام میدهد.

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

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

وراثت: انتقال خصوصیات یک کلاس به کلاس های دیگر گویند.

نمونه : شئ مخصوص هر کلاس را گویند. برای مثال، یک شی به نام obj که به کلاس circle تعلق دارد نمونه ای از کلاس circle است.

نمونه سازی (instantiation) : ساخت شئ از یک کلاس را گویند.

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

شئ: نمونه ای یکتا از یک ساختار داده ای که توسط کلاس آن تعریف شده است.

بارگزاری عملگرها : اختصاص بیش از یک رفتار به یک عملگر خاص است.

 

ایجاد کلاس

با کلمه class یک کلاس جدید تعریف میکنیم. پس از کلمه class نام کلاس را به همراه دو نقطه می آوریم. همانند نمونه زیر:

class ClassName:

'Optional class docum entation string'

class_suite

در خط دوم مستندات کلاس را مشاهده میکنید که توسط متد __doc__ قابل دسترسی است.

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

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

class Em ployee:

'Com m on base class for all em ployees'

em pCount = 0

def __init__(self, nam e, salary):

self.nam e = nam e

self.salary = salary

Em ployee.em pCount += 1

def displayCount(self):

print "Total Em ployee %d" % Em ployee.em pCount

def displayEm ployee(self):

print "Nam e : ", self.nam e, ", Salary: ", self.salary

متغیر empcount یک متغیر کلاسی است که در بین تمام نمونه های این کلاس مشترک است. از طریق empCount میتوان از داخل و بیرون از کلاس به آن دسترسی داشت.

متد اول __init__ متد خاصی است که سازنده کلاس (class constructure) یا مقدار اولیه دهنده کلاس نامیده میشود. هر زمان که شی جدیدی از یک کلاس ساخته میشود پایتون این متدها را فراخوانی میکند.

بقیه متدها را میتوانید همانند توابع تعریف کنید با این تفاوت که پارامتر اول را حتما باید self قرار دهید. اما در زمان فراخوانی متدها، پایتون خود پارامتر self را اضافه میکند و نیازی به مقدار دهی آن توسط شما نیست.

ساخت شی از کلاس

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

"This would create first object of Em ployee class"

em p1 = Em ployee("Zara", 2000)

"This would create second object of Em ployee class"

em p2 = Em ployee("Manni", 5000)

دسترسی به صفت های شئ

شما میتوانید با استفاده از نام شئ و بلافاصله نقطه، به متدها و متغیرهای کلاس دسترسی داشته باشید. با توجه به نمونه کدهای قسمت قبل، ما دو شئ emp1 و emp2 داشتیم. حال نحوه دسترسی به محتویات این دو شئ را بررسی میکنیم.

emp1.displayEmployee()

emp2.displayEmployee()

print "Total Employee %d" % Employee.empCount

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

class Employee:

'Common base class for all employees'

empCount = 0

def __init__(self, name, salary):

self.name = name

self.salary = salary

Employee.empCount += 1

def displayCount(self):

print "Total Employee %d" % Employee.empCount

def displayEmployee(self):

print "Name : ", self.name, ", Salary: ", self.salary

"This would create first object of Employee class"

emp1 = Employee("Zara", 2000)

"This would create second object of Employee class"

emp2 = Employee("Manni", 5000)

emp1.displayEmployee()

emp2.displayEmployee()

print "Total Employee %d" % Employee.empCount

خروجی کد بالا به صورت زیر است:

Name : Zara ,Salary: 2000

Name : Manni ,Salary: 5000

Total Employee 2

شما میتوانید هر لحظه که خواستید صفت های هر کلاس و شئ را اضافه ، پاک یا تغییر دهید. به کد زیر توجه کنید:

emp1.age = 7 # Add an 'age' attribute.

emp1.age = 8 # Modify 'age' attribute.

del emp1.age # Delete 'age' attribute.

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

gettr : دسترسی به صفت کلاس

hasattr : چک میکند آیا چنین صفتی در کلاس وجود دارد یا خیر

setattr : یک صفت را مقدار دهی میکند. اگر آن صفت وجود نداشت , آن را ایجاد میکند

delattr : یک صفت را حذف میکند

نحوه استفاده از توابع بالا در قالب یک مثال میتوانید در زیر ببینید:

hasattr(emp1, 'age') # Returns true if 'age' attribute exists

getattr(emp1, 'age') # Returns value of 'age' attribute

setattr(emp1, 'age', 😎 # Set attribute 'age' at 8

delattr(empl, 'age') # Delete attribute 'age'

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
    • 1 Posts
    • 67 Views
    • 1 Posts
    • 57 Views
    • 1 Posts
    • 88 Views
    • 1 Posts
    • 89 Views
    • 1 Posts
    • 125 Views
    • 1 Posts
    • 113 Views
    • 1 Posts
    • 87 Views

  • سفارش پروژه برنامه نویسی

×
×
  • اضافه کردن...