آموزش شی گرایی در پایتون، کاملا جامع و کاربردی
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش شی گرایی در پایتون
بی شک، یکی از مهم ترین درس های آموزش پایتون همین درس است، زیرا قرار است دید کاملی از مباحث شی گرایی در پایتون کسب کنید که این باعث می شود مسیر سخت و ترسناک برنامه نویسی در پروژه های بزرگ تبدیل به یک کار راحت و آسوده برای شما شود، پس مبحث شی گرایی را با جدیت تمام دنبال کنید و با آکادمی درسمن همراه باشید.
در زبان برنامه نویسی پایتون، برنامه نویسی شی گرا (OOPs) یک الگو برنامه نویسی است که از اشیا و کلاس ها در برنامه نویسی استفاده می کند. هدف آموزش شی گرایی در پایتون پیاده سازی موجودیت های دنیای واقعی مانند وراثت، چند ریختی، کپسوله سازی و ... در برنامه نویسی است.
مفهوم اصلی شی گرایی در پایتون این است که داده ها و توابعی را که روی آن کار می کنند به عنوان یک واحد به هم متصل می کنند تا هیچ بخش دیگری از کد نتواند به این داده ها دسترسی داشته باشد.
مفاهیم اصلی برنامه نویسی شی گرا در پایتون (OOPs)
- کلاس
- اشیا
- پلی مورفیسم
- کپسوله سازی
- وراثت
شی گرایی در پایتون و کلاس
در مبحث شی گرایی در پایتون، کلاس مجموعه ای از اشیا است. یک کلاس شامل نمونه های اولیه ای است که اشیا از آن ساخته می شوند. این یک موجودیت منطقی است که شامل برخی ویژگی ها و روش ها می باشد.
برای درک نیاز به ایجاد یک کلاس، به مثالی که در ادامه آمده است توجه کنید. فرض کنید می خواهید تعداد پرنده هایی را که ممکن است ویژگی های متفاوتی مانند گونه و سن داشته باشد را ردیابی کنید. اگر از یک فهرست استفاده کنیم، اولین عنصر می تواند گونه پرنده باشد و عنصر دوم می تواند نشان دهنده سن پرنده باشد.
فرض کنید 100 گونه از انواع مختلف پرندگان وجود دارد، پس چگونه می توان تشخیص داد مکان مناسب برای هر عنصر کجاست؟ در این قسمت متوجه عدم سازماندهی هر عنصر می شویم و نیاز به وجود کلاس محسوس تر می شود
نکات مهم پیرامون کلاس در پایتون
در بخش شی گرایی در پایتون، کلاس ها توسط کلمات کلیدی ایجاد می شوند. ویژگی ها نیز متغیر هایی هستند که به یک کلاس تعلق دارند. ویژگی ها همیشه عمومی هستند و با استفاده از عملگر نقطه (.) قابل دسترسی هستند. به عنوان مثال
Myclass.Myattribute
نحوه ایجاد یک کلاس در پایتون به صورت زیر می باشد:
class ClassName:
# Statement-1
.
.
.
# Statement-N
در ادامه یک مثال از ایجاد یک کلاس خالی در پایتون را آورده ایم:
# Python3 program to
# demonstrate defining
# a class
class Bird:
pass
در مثال بالا، کلاسی به نام Bird با استفاده از کلمه کلیدی class ایجاد کرده ایم.
اشیا در پایتون
در مبحث پر اهمیت شی گرایی در پایتون، شی موجودی است که دارای یک حالت و رفتار مرتبط با آن است. ممکن است هر شی دنیای واقعی مانند، صفحه کلید، لیوان، قلم، صندلی، دفتر، موبایل، ساعت و غیره باشد.
به طور خاص، هر عدد صحیح یا هر رشته منفرد، یک شی است. عدد 100 یک شی است، رشته "Darsman" یک شی است، یک لیست یک شی است که می تواند اشیا دیگر را در خود جای دهد و الی آخر.
در مبحث شی گرایی در پایتون، یک شی شامل موارد زیر است:
- حالت (state)
با ویژگی های یک شی نشان داده می شود. همچنین ویژگی های یک شی را منعکس می کند.
- رفتار (behavior)
با روش های یک شی نشان داده می شود. همچنین پاسخ یک شی به اشیا دیگر را منعکس می کند.
- هویت (identity)
یک نام منحصر به فرد به یک شی می دهد و یک شی را قادر می سازد تا با اشیا دیگر تعامل بر قرار کند.
برای درک بهتر این سه مورد از کلاس پرنده کمک می گیریم.
حالت یا ویژگی های یک پرنده در اصل همان نوع پرنده، سن پرنده، یا تنوع رنگ پرنده را عنوان کرد.
برای بخش رفتار می توان گفت که آیا پرنده در حال پرواز است یا نشسته است و یا در حال خوردن است.
هویت یک پرنده نیز نام آن پرنده می باشد.
در ادامه نیز یک مثال از ایجاد شی در پایتون آورده ایم:
Obj=Bird()
با دستور بالا یک شی به نام Obj از کلاس Bird ایجاد کرده ایم.
در ادامه دو مثال از این مبحث را آورده ایم.
مثال اول: ایجاد یک کلاس و شی با ویژگی ها کلاس و نمونه
class Bird:
# class attribute
attr1 = "birds"
# Instance attribute
def __init__(self, name):
self.name = name
# Driver code
# Object instantiation
Zizi= bird("Zizi")
Ruby= bird("Ruby")
# Accessing class attributes
print("Zizi is a {}".format(Zizi.__class__.attr1))
print("Ruby is also a {}".format(Ruby.__class__.attr1))
# Accessing instance attributes
print("My name is {}".format(Zizi.name))
print("My name is {}".format(Ruby.name))
خروجی این قطعه کد به صورت زیر می باشد:
Zizi is a bird
Ruby is also a bird
My name is Zizi
My name is Ruby
مثال دوم: ایجاد یک کلاس و اشیا به وسیله متد ها
class Bird:
# class attribute
attr1 = "birds"
# Instance attribute
def __init__(self, name):
self.name = name
def speak(self):
print("My name is {}".format(self.name))
# Driver code
# Object instantiation
Zizi = bird("Zizi")
Ruby = bird("Ruby")
# Accessing class methods
Zizi.speak()
Ruby.speak()
خروجی این قطعه کد به صورت زیر می باشد.
My name is Zizi
My name is Ruby
شی گرایی در پایتون و وراثت
وراثت در پایتون را توانایی ارث بری یک کلاس از خصوصیات کلاس دیگراست که به آن مشتق می گویند. کلاسی که ویژگی ها را مشتق می کند را کلاس مشتق شده یا کلاس فرزند می نامند. و در نهایت کلاسی که از آن ویژگی های مشتق شده را می گیریم، کلاس والد یا پایه می نامند.
درمبحث شی گرایی در پایتون، به وسیله وراثت می توانیم قابلیت استفاده مجدد از کد ها را فراهم کنیم تا از دوباره نویسی همان کد ها جلوگیری کنیم و در نهایت کد تمیز و حرفه ای داشته باشیم و در زمان نیز صرفه جویی کنیم.
یک مثال از وراثت در پایتون
# Python code to demonstrate how parent constructors
# are called.
# parent class
class Person(object):
# __init__ is known as the constructor
def __init__(self, name, idnumber):
self.name = name
self.idnumber = idnumber
def display(self):
print(self.name)
print(self.idnumber)
def details(self):
print("My name is {}".format(self.name))
print("IdNumber: {}".format(self.idnumber))
# child class
class Employee(Person):
def __init__(self, name, idnumber, salary, post):
self.salary = salary
self.post = post
# invoking the __init__ of the parent class
Person.__init__(self, name, idnumber)
def details(self):
print("My name is {}".format(self.name))
print("IdNumber: {}".format(self.idnumber))
print("Post: {}".format(self.post))
# creation of an object variable or an instance
a = Employee('Milad', 139912, 134000, "teacher")
# calling a function of the class Person using
# its instance
a.display()
a.details()
خروجی این قطعه کد به صورت زیر می باشد:
Milad
139912
My name is Milad
IdNumber:139912
Post:teacher
آنچه در این درس به آن پرداختیم؛ مبحث شی گرایی در پایتون است و رابطه آن را با کلاس، وراثت و اشیا آموزش دادیم. برای این مبحث بسیار مهم نیز مثال هایی را آوردیم تا تثبیت آن برایتان آسان تر باشد.
امیدواریم این درس برای شما دوست عزیز مفید باشد. اگر این درس را دوست داشتید، آن را با دوستانتان به اشتراک بگذارید. توصیه می کنیم برای یادگیری کامل مبحث شی گرایی در پایتون و تسلط به این مبحث، حتما فیلم تدریس شده در این صفحه را تماشا کنید.
در جلسه بعد به مبحث پر اهمیت تابع __init__ می پردازیم.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.