logo

הירושה של פייתון

ירושה היא היבט חשוב של הפרדיגמה מונחה עצמים. Inheritance מספק שימוש חוזר בקוד לתוכנית מכיוון שאנו יכולים להשתמש במחלקה קיימת כדי ליצור מחלקה חדשה במקום ליצור אותה מאפס.

בירושה, מחלקת הילד רוכשת את המאפיינים ויכולה לגשת לכל חברי הנתונים והפונקציות המוגדרות במחלקה האב. כיתת ילד יכולה גם לספק את היישום הספציפי שלה לפונקציות של כיתת האב. בחלק זה של המדריך, נדון בפירוט בירושה.

אובייקט java ל-json

ב-python, מחלקה נגזרת יכולה לרשת את מחלקת הבסיס רק על ידי אזכור הבסיס בסוגריים אחרי שם המחלקה הנגזרת. שקול את התחביר הבא כדי לרשת מחלקת בסיס למחלקה הנגזרת.

הירושה של פייתון

תחביר

 class derived-class(base class): 

מחלקה יכולה לרשת מספר מחלקות על ידי אזכור של כולן בתוך סוגריים. שקול את התחביר הבא.

תחביר

 class derive-class(, , ..... ): 

דוגמה 1

 class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak() 

תְפוּקָה:

 dog barking Animal Speaking 

ירושה רב-שכבתית של Python

ירושה מרובת רמות אפשרית בפיתון כמו שפות מונחה עצמים אחרות. ירושה מרובת רמות נשמרת בארכיון כאשר מחלקה נגזרת יורשת מחלקה נגזרת אחרת. אין הגבלה על מספר הרמות עד אליהן, הירושה הרב-שכבתית מאוחסנת בארכיון ב-python.

הירושה של פייתון

התחביר של ירושה מרובת רמות ניתן להלן.

תחביר

 class class1: class class2(class1): class class3(class2): . . 

דוגמא

 class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat() 

תְפוּקָה:

 dog barking Animal Speaking Eating bread... 

Python Multiple ירושה

Python מספק לנו את הגמישות לרשת מספר מחלקות בסיס בכיתת הילד.

הירושה של פייתון

התחביר לביצוע ירושה מרובה ניתן להלן.

תחביר

 class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN): 

דוגמא

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20)) 

תְפוּקָה:

 30 200 0.5 

שיטת issubclass(sub,sup).

שיטת issubclass(sub, sup) משמשת לבדיקת היחסים בין המחלקות שצוינו. זה מחזיר אמת אם המחלקה הראשונה היא תת המחלקה של המחלקה השנייה, ו-false אחרת.

שקול את הדוגמה הבאה.

דוגמא

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2)) 

תְפוּקָה:

 True False 

שיטת isinstance (obj, class).

השיטה isinstance() משמשת לבדיקת הקשר בין האובייקטים והמחלקות. זה מחזיר אמת אם הפרמטר הראשון, כלומר, obj הוא המופע של הפרמטר השני, כלומר, class.

שקול את הדוגמה הבאה.

השווה מחרוזות java

דוגמא

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived)) 

תְפוּקָה:

 True 

עקיפת שיטה

אנו יכולים לספק יישום ספציפי כלשהו של שיטת כיתת האב בכיתת הילד שלנו. כאשר שיטת מחלקת האב מוגדרת בכיתה הילד עם יישום ספציפי כלשהו, ​​אז המושג נקרא דחיפת מתודה. ייתכן שנצטרך לבצע ביטול מתודה בתרחיש שבו יש צורך בהגדרה השונה של שיטת מחלקה אב במחלקה הילדית.

שקול את הדוגמה הבאה כדי לבצע עקיפה של שיטה ב-python.

דוגמא

 class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak() 

תְפוּקָה:

 Barking 

דוגמה לחיים אמיתיים לעקיפה של השיטה

 class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi()); 

תְפוּקָה:

 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

הפשטת נתונים בפיתון

הפשטה היא היבט חשוב בתכנות מונחה עצמים. ב-python, אנו יכולים גם לבצע הסתרת נתונים על ידי הוספת הקו התחתון הכפול (___) כתחילית לתכונה שאמורה להסתיר. לאחר מכן, התכונה לא תהיה גלויה מחוץ למחלקה דרך האובייקט.

שקול את הדוגמה הבאה.

דוגמא

 class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display() 

תְפוּקָה:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'