الوراثة في بايثون | Inheritance in python


الوراثة في البرمجة هي قدرة صنف class ما على اشتقاق أو وراثة الخصائص من صنف class اخر.

فوائد الوراثة:

  • إنه يمثل علاقات العالم الحقيقي بشكل جيد.
  • يوفر إمكانية إعادة استخدام الكود البرمجي, لا يتعين علينا كتابة نفس الرمز مرارًا وتكرارًا. ويسمح لنا ايضا بإضافة المزيد من الميزات إلى الصنف class دون تعديله.
  • إنها متعدية بطبيعتها ، مما يعني أنه إذا ورثت الصنف B من صنف اخر A ، فإن جميع الاصناف الفرعية من B سترث تلقائيًا من الصنف A.

 

الصنف الاب يسمى super class  والصنف الابن يسمى sub class

مثال بسيط على الوراثة في بايثون Python:

# A Python program to demonstrate inheritance 

# Base or Super class. Note object in bracket. 
# (Generally, object is made ancestor of all classes) 
# In Python 3.x "class Person" is 
# equivalent to "class Person(object)" 
class Person(object): 
	
	# Constructor 
	def __init__(self, name): 
		self.name = name 

	# To get name 
	def getName(self): 
		return self.name 

	# To check if this person is an employee 
	def isEmployee(self): 
		return False


# Inherited or Subclass (Note Person in bracket) 
class Employee(Person): 

	# Here we return true 
	def isEmployee(self): 
		return True

# Driver code 
emp = Person("Geek1") # An Object of Person 
print(emp.getName(), emp.isEmployee()) 

emp = Employee("Geek2") # An Object of Employee 
print(emp.getName(), emp.isEmployee()) 

المخرجات:

Geek1 False
Geek2 True

 

مثال على الوراثة من الصنف object, الصنف object هو الاب لجميع الاصناف في بايثون:

# 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) 

# 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) 

				
# creation of an object variable or an instance 
a = Employee('Rahul', 886012, 200000, "Intern")	 

# calling a function of the class Person using its instance 
a.display() 

المخرجات:

Rahul
886012

 

 

انواع الوراثة بالبرمجة:

1. الوراثة الفردية single Inheritance : عندما ترث فئة فرعية من فئة والد واحد فقط ، فإنها تسمى الميراث الفردي. و رأينا مثالا على ذلك أعلاه.

2. الوراثة المتعددة multiple Inheritance : عندما ترث فئة فرعية من عدة فئات رئيسية ، فإنها تسمى الوراثة المتعددة.

على عكس Java ومثل C++ ، تدعم Python الوراثة المتعددة. نحدد جميع الفئات الرئيسية كقائمة مفصولة بفواصل في القوس.

مثال على الوراثة المتعددة multiple Inheritance في بايثون:

# Python example to show the working of multiple 
# inheritance 
class Base1(object): 
	def __init__(self): 
		self.str1 = "Geek1"
		print("Base1") 

class Base2(object): 
	def __init__(self): 
		self.str2 = "Geek2"		
		print("Base2") 

class Derived(Base1, Base2): 
	def __init__(self): 
		
		# Calling constructors of Base1 
		# and Base2 classes 
		Base1.__init__(self) 
		Base2.__init__(self) 
		print("Derived") 
		
	def printStrs(self): 
		print(self.str1, self.str2) 
		

ob = Derived() 
ob.printStrs() 

 

المخرجات:

Base1
Base2
Derived
Geek1 Geek2

3.الوراثة متعددة المستويات Multilevel inheritance : عندما يكون لدينا صنف جد وصنف اب وصنف حفيد.

مثال على Multilevel inheritance: 

# A Python program to demonstrate inheritance 

# Base or Super class. Note object in bracket. 
# (Generally, object is made ancestor of all classes) 
# In Python 3.x "class Person" is 
# equivalent to "class Person(object)" 
class Base(object): 
	
	# Constructor 
	def __init__(self, name): 
		self.name = name 

	# To get name 
	def getName(self): 
		return self.name 


# Inherited or Sub class (Note Person in bracket) 
class Child(Base): 
	
	# Constructor 
	def __init__(self, name, age): 
		Base.__init__(self, name) 
		self.age = age 

	# To get name 
	def getAge(self): 
		return self.age 

# Inherited or Sub class (Note Person in bracket) 
class GrandChild(Child): 
	
	# Constructor 
	def __init__(self, name, age, address): 
		Child.__init__(self, name, age) 
		self.address = address 

	# To get address 
	def getAddress(self): 
		return self.address		 

# Driver code 
g = GrandChild("Geek1", 23, "Noida") 
print(g.getName(), g.getAge(), g.getAddress()) 

المخرجات:

Geek1 23 Noida

 

4. الوراثة الهرمية Hierarchical inheritance : يتم إنشاء أكثر من فئة مشتقة من قاعدة واحدة.

5. الوراثة الهجينة Hybrid inheritance : يجمع هذا الشكل بين أكثر من شكل من أشكال الوراثة. في الأساس ، هو مزيج من أكثر من نوع واحد من الوراثة.

 

 


المرفقات:
هل كان المحتوى مفيد؟

التعليقات

لاضافة سؤال أو تعليق على المشاركة يتوجب عليك تسجيل الدخول
تسجيل الدخول

محتاج مساعدة؟ تواصل مع مدرس اونلاين الان!

getter and setter in python توابع التغليف في بايثون
تعدد الأشكال في بايثون | Polymorphism in Python
محتاج مساعدة باختيار المدرس الافضل؟ تواصل مع فريقنا الان لمساعدتك بتأمين افضل مدرس
ماهو التخصص الذي تبحث عنه؟
اكتب هنا...