شرح OOP في لغة بايثون وامثلة عليها | Explanation of OOP in Python and examples
برمجة كائنية التوجه او Object-oriented programming تعد من اهم القواعد التي يجب على كل مبرمج معرفتها لكي يستطيع التقدم في البرمجة وهي عبارة اننا نتعامل مع كلاسات لكي تسهل علينا التعامل مع المشاريع الكبيره وتوفر علينا الكثير من الوقت واغلب اللغات تستخدم oop مثل جافا و سي بلس وغيرها الكثير من اللغات وقد شرحناها لكم في الجافا واليوم سوف نشرحها لكم في python وتعد هذة المقالة والقادمه من اهم المقالات التي سوف تفرق معك بشكل كبير في البايثون .
تعد مشاريع بلغه بايثون احد اهم الاشياء التي يبحث عليها الكثير منكم. لكي يتعلم و يتقن لغه البايثون ويرجع ذلك الى عده اسباب اولا ان اسكريبتات لغه بايثون مهمه جدا في الذكاء الاصطناعي ويريد الكثير منكم تعلم هذه المهاره. ايضا تعد لغه بايتون اكثر لغه عليها طلب في سوق العمل في الوقت الحالي وذلك لعده اشياء سوف نذكرها معكم في النقطه التاليه. ولكن يجب عليكم التركيز في جميع اكواد بايثون وامثله على الاكواد التي سوف نقدمها لكم لانه باتباعك هذه الاكواد واتقانها بشكل جيد سوف اخبرك انك سوف تكون قادر على فعل خوارزميات الذكاء الاصطناعي حيث سوف نتعمق معكم في كثير من التفاصيل حول هذه اللغه وحول البرمجه من خلالها.
السبب الذي يجعل لغه python اكثر لغه عليها طلب في سوق العمل وايضا في الذكاء الاصطناعي هو توفرها على مكتبات كثيره وايضا سهوله في كتابه الكود حيث يمكنك كتابه اكواد لغه بايثون باي لغه اخرى مثل لغه جافا ولكن قد تجد ان الامر. طويل جدا في الجافا والذي تتميز بايثون به البساطه. وهذا ما يفضله الكثير منا وهو كتابه اكواد بسيطه جدا تقوم بوظيفه كبيره. وايضا وجود المكتبات. يساعد على تحسين و في اشهار لغه البايثون. ومن خلال المقالات التاليه سوف نستعرض معكم اكواد و مكتبات كثيره جدا. بي بايثون
كيفية انشاء class وتمرير بيانات له من Main class ببايثون
نقوم بكتابة الامر class ثم نكتب اسم الكلاس ويكون اول حرف capital وبعدها : وبداخله نكتب الكود الذي نريدة ببساطة سوف نضع الاسم الاول والثاني والعمر والجنس ونخرج من الكلاس لكي نستخدمه في الكلاس الاساسي عن طريق كتابتة اسمة ونساوية بالاسم وبعدها () لانه كلاس وبعدها نضع المعطيات التي نريد طباعتها او اضافتها في متغير وفي النهاية نقوم بطابعتها كما يظهر في الo/p الموجود في الصورة .
class Person :
first_name = ''
second_name = ''
age = 0
gender = ''
person = Person()
a = person.first_name = 'ahmed'
b = person.second_name = 'mahmoud'
c = person.age = 22
d = person.first_name = 'male'
print(a , b , c , d )
كيفية انشاء constructor في python
دالة البناء من اهم الدوال المستخدم في oop وهي بكل بساطة تساعدنا على كتابة المتغيرات الخاصه بنا في اماكن مختلفة في الكود بمعنى تساعدنا على تكرار محتويات الكود كامله اكثر من مره وتوفر الكثر من الوقت وهي بكل بساطة بعد انشاء الكلاس نقوم بعمل method باسم __init__ وهذة لانشاء دالة البناء (constructor) , ونضع بداخلها self وهي نفس this في الجافا ونكتب الاكواد التي نريدها و self ثم الاسم اعطيها اسم وقم بمساوتها بالقيمة الموجوده داخل def كما هو موضح بالصورة , وقم بعدها بكتابة اسم الكلاس المعطيات التي تريد تمريرها بشكل كامل كما موضح
class Person :
def __init__(self,a,b,c,d) :
self.first_name = a
self.second_name = b
self.age = c
self.gender = d
aa = Person("ahmed","mahmoud",22,"male")
ab = Person("khaled","mahmoud",25,"male")
print(aa.first_name , aa.second_name)
print(ab.second_name , ab.gender)
كيفية عمل عمليات حسابية داخل oop في ألبايثون
هذا الكود نفس السابق تقريبا ولكن هنا نريد ان يكون الزيادة بمقدار 5 في العمر بمعنى لو ادخل لنا العمر 20 يطبع 25 وهكذا يمكنك اجراء اي عملية تريدها وليس فقط زيادة فقط نحن نشرح الفكرة وحاول دائما التفكير في اي عملية في بالك وقم بتنفيذها لكي تتاكد من فهمك للقواعد بشكل جيد .
class Person :
def __init__(self,a,b,c,d) :
self.first_name = a
self.second_name = b
self.age = c
self.gender = d
aa = Person("ahmed","mahmoud",22,"male")
ab = Person("khaled","mahmoud",25,"male")
aa.age +=5
print(aa.age , aa.second_name)
print(ab.second_name , ab.gender)
استخدام private و try & except والوراثة في البايثون
ببساطة قم بعمل __ قبل الاسم وبعد self وهذا يدل ان هذة الدالة private وهنا لو تلاحظ اننا قمنا بإنشاء مشروعين واحد باسم main والاخر باسم main2 وقمنا بعمل في اول مشروع كلاس باسم person به وظيفتين الاولى مجموعة من المتغيرات والثانية اذا لم يقوم بادخال العمر بشكل صحيح بمعنى لو ادخلة نصوص تظهر رسالة يجب ان يكون int والامر raise يعني اخرج يمكن ان نعتبرها نفس عبارة print والحالة الاخرى لو كان العمر اقل من 0 وهذا يدل ان الرقم سالب وهذا ايضا ليس عمر , المشروع الاخر قمنا بالوراثة من المشروع الاول ومررنا المتغيرات والبيانات الخاصه بنا كما هو موضح .
# --- main.py
class Person :
def __init__(self,a,b,c,d) :
self.first_name = a
self.second_name = b
self.__age = c #Private variable
self.gender = d
def set_age(self , new_age) :
if not isinstance(new_age , int) :
raise TypeError (f"the age must be string {type(new_age)} ")
if new_age <= 0 :
raise ValueError (f"the age must be greater than 0")
self.age = new_age
# --- main2.py
from main import Person
p1=Person("ahmed","khaled",30,"m")
try :
p1.set_age(70)
except Exception as e:
print(e)
p1.age = "215"
print(p1.age)
كيفية عمل append لل list باستخدام oop بايثون
نفس الكود السابق سوف نعمل عليه وسنقوم بعمل تعديل بسيط وهو اننا سوف نضيف عنوان وهو مصر القاهره في الكلاس الاخر سوف نقوم بعمل append ونضيف عنوان جديد وبالتالي سوف يذهب الى العنوان القديم ويضيف ما طلبانه منه في النهاية وهذة هي فكرة append وقد سبق وشرحنا لكم كل هذا من قبل في الدروس السابقه .
# --- main.py
class Person :
def __init__(self,a,b,c,d) :
self.first_name = a
self.second_name = b
self.__age = c #Private variable
self.addresses = [ "egypt" , "cairo" ]
def set_age(self , new_age) :
if not isinstance(new_age , int) :
raise TypeError (f"the age must be string {type(new_age)} ")
if new_age <= 0 :
raise ValueError (f"the age must be greater than 0")
self.age = new_age
# --- main2.py
from main import Person
p1=Person("ahmed","khaled",30,"m")
try :
p1.set_age(70)
except Exception as e:
print(e)
add = p1.addresses
add.append("nasr city")
print(p1.addresses
كود مشروع oop باستخدام بايثون
اخر كود معانا في مقالة اليوم عبارة عن مشروع بسيط بالoop بواسطة python وهذا المشروع تقريبا يشمل كلالسابق حيث سوف نقوم باضافة عنوان ثم عنوان اخر وبعدها نقوم بحذف اسم معين من القائمة يمكنك مشاهدة المشروع كامل واستخدامه لكي تتعمق اكثر فيه واعتقد هذا المشروع كافي لكي تفهم الفكرة بشكل كامل .
# --- main.py
class Person :
def __init__(self,a,b,c,d) :
self.first_name = a
self.second_name = b
self.age = c
self.__addresses = [ "egypt" , "cairo" ]
def get_age(self) :
return self.__age
def get_addresses(self) :
return self.__addresses.copy()
def add_addresses (self , new_addresses) :
new_addresses = new_addresses.title()
if new_addresses not in self.__addresses :
self.__addresses.append(new_addresses)
def remove_get_addresses(self,address) :
address = address.title()
if address in self.__addresses :
self.__addresses.remove(address)
# --- main2.py
from main import Person
p1 = Person("Mohamed", 30, 'm', '4545484494949')
p1.add_addresses("naser city")
print(p1.get_addresses())
p1.add_addresses("giza")
print(p1.get_addresses())
p1.remove_get_addresses("naser city")
print(p1.get_addresses())
الى هنا تكون انتهت مقالة اليوم اتمنى ان تكون المقالة نالت على رضاكم واتمنى ان نلقاكم في مقالة جديدة من مقالات البايثون ولمزيد من الاكواد والشروحات بالبايثون او لغات البرمجة الاخرى يمكنك مشاهدة باقي المقالات على المواقع او تستطيع الاطلاع على المقالات التالية :-
tensorflow python erp python django mongodb python mongodb python host