27/07/2019, 16:43

Kế thừa trong Python

Previous Nội dung chính: Khái niệm kế thừa trong Python Cú pháp đơn kế thừa Ví dụ đơn kế thừa trong Python Kế thừa đa cấp trong Python Cú pháp kế thừa đa cấp Ví dụ kế thừa đa cấp trong Python Đa thừa kế trong Python Cú pháp đa kế thừa Ví dụ đa ...

Previous

Nội dung chính:

  • Khái niệm kế thừa trong Python
    • Cú pháp đơn kế thừa
    • Ví dụ đơn kế thừa trong Python
  • Kế thừa đa cấp trong Python
    • Cú pháp kế thừa đa cấp
    • Ví dụ kế thừa đa cấp trong Python
  • Đa thừa kế trong Python
    • Cú pháp đa kế thừa
    • Ví dụ đa kế thừa trong Python
    • Phương thức issubclass(sub,sup)
    • Phương thức isinstance (obj, class)

Khái niệm kế thừa trong Python

Kế thừa là một khía cạnh quan trọng của mô hình lập trình hướng đối tượng. Kế thừa cung cấp khả năng sử dụng lại mã cho chương trình vì chúng ta có thể sử dụng một lớp hiện có để tạo một lớp mới thay vì tạo nó từ đầu.

Trong kế thừa, lớp con có được các thuộc tính và có thể truy cập tất cả các thành viên dữ liệu và các hàm được định nghĩa trong lớp cha. Một lớp con cũng có thể cung cấp việc triển khai cụ thể cho các hàm của lớp cha. Trong bài này, chúng ta sẽ thảo luận chi tiết về kế thừa.

Trong python, một lớp dẫn xuất (hay còn gọi là lớp con – sub-class) có thể kế thừa lớp cơ sở (lớp cha – super-class) bằng cách chỉ đề cập đến cơ sở trong ngoặc sau tên lớp dẫn xuất. Sau đây là cú pháp để một lớp cơ sở kế thừa lớp dẫn xuất.

Kế thừa trong Python

Cú pháp đơn kế thừa

class derived-class(base class):
    <class-suite>

Ví dụ đơn kế thừa trong Python

class Animal:
    def speak(self):
        print("Animal Speaking")

# lớp con Dog kế thừa lớp Animal
class Dog(Animal):
    def bark(self):
        print("Gou gou!")
d = Dog()
d.bark()
d.speak()

Kết quả:

Gou gou!
Animal Speaking

Kế thừa đa cấp trong Python

Kế thừa đa cấp có thể có trong python như các ngôn ngữ hướng đối tượng khác. Kế thừa đa cấp khi một lớp dẫn xuất kế thừa một lớp dẫn xuất khác. Không có giới hạn về số lượng cấp độ, kế thừa đa cấp trong python.

Kế thừa đa cấp trong Python

Cú pháp kế thừa đa cấp

class class1:  
    <class-suite>   
class class2(class1):  
    <class suite>  
class class3(class2):  
    <class suite>
...
class classN(classN-1):  
    <class suite>

Ví dụ kế thừa đa cấp trong Python

class Animal:  
    def speak(self):  
        print("Animal Speaking")

# lớp con Dog kế thừa lớp Animal
class Dog(Animal):
    def bark(self):
        print("Gou gou!")

# lớp con Dogchild kế thừa lớp Dog
class DogChild(Dog):
    def eat(self):
        print("Eating milk...")

d = DogChild()
d.bark()
d.speak()
d.eat()
d.speak()

Kết quả:

Gou gou!
Animal Speaking
Eating milk...
Animal Speaking

Đa thừa kế trong Python

Python cung cấp cho chúng ta sự linh hoạt để kế thừa nhiều lớp cơ sở trong lớp con.

Đa Kế thừa trong Python

Một lớp có thể kế thừa nhiều lớp bằng cách đề cập đến tất cả chúng trong dấu ngoặc. Hãy xem xét cú pháp sau đây.

Cú pháp đa kế thừa

class Base1:  
    <class-suite>  
  
class Base2:  
    <class-suite>  

...

class BaseN:  
    <class-suite>  
  
class Derived(Base1, Base2, ...... BaseN):  
    <class-suite> 

Ví dụ đa kế thừa trong Python

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

Kết quả:

30
200
0.5

Phương thức issubclass(sub,sup)

Phương thức issubclass(sub, sup) được sử dụng để kiểm tra mối quan hệ giữa các lớp được chỉ định. Nó trả về true nếu lớp thứ nhất là lớp con của lớp thứ hai và ngược lại là 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;

print("Derived là con của Calculation2:", issubclass(Derived,Calculation2))
print("Calculation1 là con của Calculation2:", issubclass(Calculation1,Calculation2))

Kết quả:

Derived là con của Calculation2: True
Calculation1 là con của Calculation2: False

Phương thức isinstance (obj, class)

Phương thức isinstance () được sử dụng để kiểm tra mối quan hệ giữa các đối tượng và các lớp. Nó trả về true nếu tham số đầu tiên, tức là obj là thể hiện của tham số thứ hai, tức là lớp.

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("Đối tượng d là thể hiện của lớp Derived: ", isinstance(d,Derived))

Kết quả:

Đối tượng d là thể hiện của lớp Derived:  True
Previous
0