multiple inheritance គឺជាការបង្កើតថ្នាក់មួយបន្តចេញពីថ្នាក់មួយចំនួនទៀត ក្នុងពេលតែមួយ។ ការបង្កើត multiple inheritance ត្រូវធ្វើឡើងដូចខាងក្រោមនេះ៖
class Area(): pi = 3.14 def __init__(self, *dimension): self.dimension = dimension def surface(self): return self.dimension class Volume(): pi = 3.1415 def __init__(self, *dimension): self.dimension = dimension def volume(self): return self.dimension class Cube(Area, Volume): pi = 3.141592 def __init__(self, *dimension): self.dimension = dimension def surface(self): s = self.dimension[0] * self.dimension[1] * 6 print("The cube's surface is", s) def volume(self): v = self.dimension[0] * self.dimension[1] * self.dimension[2] print("The cube's volume is", v)
ក្នុងករណីមានការបង្កើត multiple inheritance នៅពេលដែល attribute ផ្សេងៗត្រូវយកទៅប្រើ ការស្វែងរក attribute ទាំងនោះ ត្រូវធ្វើឡើងដូចនៅក្នុងរូបខាងក្រោមនេះ៖
រូបខាងលើនេះបង្ហាញថា បើសិនជាការយក attribute នានាទៅប្រើតាមរយៈ instance នៃ subclass ការស្វែងរកវត្ថុនោះត្រូវធ្វើឡើងនៅក្នុង instance នោះមុន រួចបានឡើងទៅថ្នាក់របស់វា រួចឡើងទៅ superclass របស់វា ជាបន្តបន្ទាប់តាមសញ្ញាព្រួញ រហូតដល់ attribute នោះត្រូវរកឃើញទើបឈប់។ ហើយក្នុងករណីដែលមាន attribute មានឈ្មោះដូចគ្នាជាច្រើននៅក្នុងថ្នាក់ទាំងនោះ attribute ដែលត្រូវយកមកប្រើ គឺជា attribute ដែលត្រូវរកឃើញមុនគេ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
class Area(): pi = 3.14 def __init__(self, *dimension): self.dimension = dimension def surface(self): return self.dimension class Volume(): pi = 3.1415 def __init__(self, *dimension): self.dimension = dimension def volume(self): return self.dimension class Cube(Area, Volume): pi = 3.141592 def __init__(self, *dimension): self.dimension = dimension def surface(self): s = self.dimension[0] * self.dimension[1] * 6 print("The cube's surface is", s) def volume(self): v = self.dimension[0] * self.dimension[1] * self.dimension[2] print("The cube's volume is", v) cube = Cube(25, 5, 10) cube.surface() cube.volume() print("The value of pi is", cube.pi)
The cube's surface is 750 The cube's volume is 1250 The value of pi is 3.141592
ចំពោះ overridden method នៅក្នុង superclass បើសិនជាយើងចង់ call method ទាំងនោះនៅក្នុង subclass យើងត្រូវធ្វើដូចខាងក្រោមនេះ៖
class Area(): pi = 3.14 def __init__(self, *dimension): self.dimension = dimension def surface(self): return self.dimension class Volume(): pi = 3.1415 def __init__(self, *dimension): self.dimension = dimension def volume(self): return self.dimension class Cube(Area, Volume): pi = 3.141592 def __init__(self, width, height, depth): super().__init__(width, height) Volume.__init__(self, width, height, depth) def surface(self): dimension = super().surface() s = dimension[0] * dimension[1] * 6 print("The cube's surface is", s) def volume(self): dimension = super().volume() v = dimension[0] * dimension[1] * dimension[2] print("The cube's volume is", v) cube = Cube(25, 5, 10) cube.surface() cube.volume()
The cube's surface is 750 The cube's volume is 1250