Python Inheritance
Python Inheritance
Inheritance သည် အခြား class မှ method နှင့် properties အားလုံးကို အမွေဆက်ခံသည့် class တစ်ခုကို သတ်မှတ်နိုင်စေပါသည်။
Parent class သည် base class ဟုခေါ်သော အမွေဆက်ခံသည့် အတန်းဖြစ်သည်။
Child class သည် derived class ဟုခေါ်သော အခြားအတန်းမှ အမွေဆက်ခံသော အတန်းဖြစ်သည်။
Parent Class တစ်ခု ဖန်တီးပါ။
မည်သည့်အတန်းမဆို parent class ဖြစ်နိုင်သည်၊ ထို့ကြောင့် syntax သည် အခြားသော class များကို ဖန်တီးခြင်းနှင့် အတူတူပင်ဖြစ်သည်-
ဥပမာ
Person
၊ with
firstname
နှင့် lastname
ဂုဏ်သတ္တိများ ၊ နှင့် printname
method ဟုခေါ်သော class တစ်ခုကို ဖန်တီးပါ ။
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname,
self.lastname)
#Use the Person class to create an object, and then
execute the printname method:
x = Person("John", "Doe")
x.printname()
ကလေးအတန်းဖန်တီးပါ။
အခြားအတန်းမှ လုပ်ဆောင်နိုင်စွမ်းကို အမွေဆက်ခံသော အတန်းကို ဖန်တီးရန်၊ ကလေးအတန်းကို ဖန်တီးသောအခါတွင် ပါရာမီတာအဖြစ် မိဘအတန်းကို ပေးပို့ပါ-
ဥပမာ
Student
အတန်း မှ ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများကို အမွေဆက်ခံမည့် အတန်းအမည်တစ်ခု ဖန်တီး ပါ Person
-
class Student(Person):
pass
မှတ်ချက်-pass
အခြားဂုဏ်သတ္တိများ သို့မဟုတ် နည်းလမ်းများကို အတန်းထဲသို့ မထည့်လိုသည့်အခါ အဓိကစကားလုံးကို အသုံးပြု ပါ။
ယခု ကျောင်းသားအတန်းတွင် Person class ကဲ့သို့တူညီသော ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများရှိသည်။
ဥပမာ
Student
object တစ်ခုဖန်တီးရန် class ကိုသုံးပါ ၊ ထို့နောက် printname
method ကို execute:
x = Student("Mike", "Olsen")
x.printname()
__init__() လုပ်ဆောင်ချက်ကို ထည့်ပါ။
ယခုအချိန်အထိ ကျွန်ုပ်တို့သည် ၎င်း၏မိဘထံမှ ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများကို အမွေဆက်ခံမည့် ကလေးအတန်းအစားကို ဖန်တီးထားပါသည်။
__init__()
ကျွန်ုပ်တို့သည် လုပ်ဆောင်ချက်ကို ကလေးအတန်းအစား ( pass
သော့ချက်စကားလုံးအစား) တွင် ထည့်လိုပါသည် ။
မှတ်ချက်- အရာဝတ္ထုအသစ်တစ်ခုဖန်တီးရန် class ကိုအသုံးပြု သည့် __init__()
အခါတိုင်း function ကို အလိုအလျောက်ခေါ်သည်။
ဥပမာ
အတန်း ထဲသို့ __init__()
လုပ်ဆောင်ချက်ကို
ထည့်ပါStudent
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
လုပ်ဆောင်ချက်ကို သင်ထည့်သွင်းသောအခါ ၊ ကလေးအတန်းသည် မိဘ၏ လုပ်ဆောင်ချက်ကို __init__()
အမွေဆက်ခံတော့မည် မဟုတ်ပါ ။__init__()
မှတ်ချက်- ကလေး၏ __init__()
လုပ်ဆောင်ချက် သည် မိဘ၏လုပ်ဆောင်ချက်၏ အမွေဆက်ခံမှုကို လွှမ်းမိုး
__init__()
ထားသည်။
မိဘ၏လုပ်ဆောင်ချက်ကို အမွေဆက်ခံရန်၊ မိဘ၏ __init__()
လုပ်ဆောင်ချက်သို့ ခေါ်ဆိုမှုတစ်ခုထည့်ပါ __init__()
-
ဥပမာ
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
ယခုကျွန်ုပ်တို့သည် __init__() လုပ်ဆောင်ချက်ကို အောင်မြင်စွာထည့်သွင်းပြီး parent class ၏ အမွေဆက်ခံမှုကို သိမ်းဆည်းထားပြီး၊ လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန် အဆင်သင့်ဖြစ်နေပါပြီ
__init__()
။
super() လုပ်ဆောင်ချက်ကို အသုံးပြုပါ။
super()
Python တွင် ကလေးအတန်းသည် ၎င်း၏မိဘထံမှ နည်းလမ်းများနှင့် ဂုဏ်သတ္တိအားလုံးကို အမွေဆက်ခံစေမည့် လုပ်ဆောင်ချက် တစ်ခုလည်း ပါရှိသည် ။
ဥပမာ
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
လုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းဖြင့် super()
၊ သင်သည် ပင်မဒြပ်စင်၏ အမည်ကို အသုံးပြုရန် မလိုအပ်ပါ၊ ၎င်းသည် ၎င်း၏ မိဘထံမှ နည်းလမ်းများနှင့် ဂုဏ်သတ္တိများကို အလိုအလျောက် အမွေဆက်ခံမည်ဖြစ်သည်။
Properties ကိုထည့်ပါ။
ဥပမာ
အတန်း graduationyear
သို့
ခေါ်သော ပစ္စည်းတစ်ခုကို ထည့်ပါ -Student
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
အောက်ဖော်ပြပါ ဥပမာတွင်၊ နှစ်သည် ပြောင်းလဲနိုင်သော ဖြစ်သင့်ပြီး ကျောင်းသားအရာဝတ္ထုများကို ဖန်တီးသောအခါ အတန်း 2019
ထဲသို့ ရောက်သွား
ပါသည်။ Student
ထိုသို့ပြုလုပ်ရန် __init__() လုပ်ဆောင်ချက်တွင် အခြားသော ကန့်သတ်ချက်တစ်ခုကို ထည့်ပါ-
ဥပမာ
ကန့်သတ်ချက် တစ်ခုထည့်ပါ year
၊ အရာဝတ္ထုများဖန်တီးသည့်အခါ မှန်ကန်သောနှစ်ကို ဖြတ်သန်းပါ-
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
နည်းလမ်းများထည့်ပါ။
ဥပမာ
အတန်း welcome
သို့
ခေါ်သည့်နည်းလမ်းကို ထည့်ပါ -Student
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Welcome",
self.firstname, self.lastname, "to the class of", self.graduationyear)
parent class ရှိ function တစ်ခုကဲ့သို့ နာမည်တူ ကလေးအတန်းတွင် method တစ်ခုကို ထည့်ပါက၊ parent method ၏ အမွေဆက်ခံမှုကို လွှမ်းမိုးသွားပါမည်။