Hướng dẫn python multiple inheritance attributes - thuộc tính đa kế thừa python

Python Nhiều kế thừa

Một lớp có thể được lấy từ nhiều lớp cơ sở trong Python, tương tự như C ++. Điều này được gọi là nhiều kế thừa.

Nội phân Chính showShow

  • Python Nhiều kế thừa
  • Kế thừa đa cấp Python
  • Thứ tự giải quyết phương pháp trong Python
  • Kế thừa (thừa kế) là gì?
  • Đ-Nh ngh ĩa một lớp cơ sở (lớp cơ sở)
  • Đ-Nh ngh ĩa một lớp con (lớp con)
  • GHI ĐI
  • Th không
  • Ha siêu ()
  • Kế thừa từ nhiều lớp cơ sở - nhiều kế thừa
  • Tổng kết

Trong nhiều kế thừa, các tính năng của tất cả các lớp cơ sở được kế thừa vào lớp dẫn xuất. Cú pháp cho nhiều kế thừa tương tự như thừa kế đơn.

Thí dụ

class Base1:
    pass

class Base2:
    pass

class MultiDerived(Base1, Base2):
    pass

Ở đây, lớp nhiều người có nguồn gốc từ các lớp Base1 và Base2.

Hướng dẫn python multiple inheritance attributes - thuộc tính đa kế thừa python

Nhiều kế thừa trong Python

Lớp nhiều người thừa kế từ cả hai lớp Base1 và Base2.


Kế thừa đa cấp Python

Thứ tự giải quyết phương pháp trong Python

Kế thừa (thừa kế) là gì?

Đ-Nh ngh ĩa một lớp cơ sở (lớp cơ sở)

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass

Đ-Nh ngh ĩa một lớp con (lớp con)

GHI ĐI

Thứ tự giải quyết phương pháp trong Python

Kế thừa (thừa kế) là gì?

Đ-Nh ngh ĩa một lớp cơ sở (lớp cơ sở)

# Output: True
print(issubclass(list,object))

# Output: True
print(isinstance(5.5,object))

# Output: True
print(isinstance("Hello",object))

Đ-Nh ngh ĩa một lớp con (lớp con)

GHI ĐIMethod Resolution Order (MRO).

Th không

Ha siêu ()

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]

Kế thừa từ nhiều lớp cơ sở - nhiều kế thừa

Tổng kết

Trong nhiều kế thừa, các tính năng của tất cả các lớp cơ sở được kế thừa vào lớp dẫn xuất. Cú pháp cho nhiều kế thừa tương tự như thừa kế đơn.

[, , , , , , ]

Thí dụ

Ở đây, lớp nhiều người có nguồn gốc từ các lớp Base1 và Base2.
Vậy giải pháp là kế thừa (Inheritance)

Nhiều kế thừa trong Python

  • Lớp nhiều người thừa kế từ cả hai lớp Base1 và Base2. Kế thừa (Inheritance) là gì?
  • Chúng ta cũng có thể kế thừa từ một lớp học dẫn xuất. Điều này được gọi là kế thừa đa cấp. Nó có thể có bất kỳ độ sâu nào trong Python. Định nghĩa một lớp cơ sở ( base class)
  • Trong kế thừa đa cấp, các tính năng của lớp cơ sở và lớp dẫn xuất được kế thừa vào lớp dẫn xuất mới. Định nghĩa một lớp con (subclassing)
    • Một ví dụ với trực quan tương ứng được đưa ra dưới đây. Ghi đè nên chức năng hiện có – Override a Method
    • Ở đây, lớp dẫn xuất1 có nguồn gốc từ lớp cơ sở và lớp dẫn xuất2 có nguồn gốc từ lớp dẫn xuất1. Thêm một phương thức mới
    • Di sản đa cấp trong Python Hàm super()
  • Mỗi lớp học trong Python đều có nguồn gốc từ lớp
    class Base:
        pass
    
    class Derived1(Base):
        pass
    
    class Derived2(Derived1):
        pass
    3. Nó là loại cơ sở nhất trong Python.
    Kế thừa từ nhiều lớp cơ sở – Multiple Inheritance
  • Vì vậy, về mặt kỹ thuật, tất cả các lớp khác, được tích hợp hoặc do người dùng xác định, là các lớp có nguồn gốc và tất cả các đối tượng là các trường hợp của lớp
    class Base:
        pass
    
    class Derived1(Base):
        pass
    
    class Derived2(Derived1):
        pass
    3.
    Video demo
  • Trong kịch bản nhiều kế thừa, bất kỳ thuộc tính được chỉ định nào được tìm kiếm đầu tiên trong lớp hiện tại. Nếu không được tìm thấy, việc tìm kiếm tiếp tục vào các lớp phụ huynh ở thời trang sâu, trái phải mà không tìm kiếm cùng một lớp hai lần. Tổng kết

Kế thừa (thừa kế) là gì?

Đ-Nh ngh ĩa một lớp cơ sở (lớp cơ sở)

Đ-Nh ngh ĩa một lớp con (lớp con)

Đ-Nh ngh ĩa một lớp cơ sở (lớp cơ sở)

Đ-Nh ngh ĩa một lớp con (lớp con)

class Animal:
    def description(self):
        print("I'm an Animal!")

GHI ĐI

Đ-Nh ngh ĩa một lớp con (lớp con)

class Animal:
    def description(self):
        print("I'm an Animal!")
class Dog(Animal):
    pass

GHI ĐI

Th không

class Animal:
    def description(self):
        print("I'm an Animal!")

class Dog(Animal):
    pass

an = Animal()
shiba = Dog()
an.description()
# prints I'm an Animal!

shiba.description()
# prints I'm an Animal!

Ha siêu ()

GHI ĐI

class Animal:
    def description(self):
        print("I'm an Animal!")

class Dog(Animal):
    def description(self):
        print("I'm a dog!")

an = Animal()
shiba = Dog()
an.description()
# prints I'm an Animal!

shiba.description()
# prints I'm a dog!

Th không

Thêm một phương thức mới

Lớp con cũng có thể định nghĩa một phương thức mới chưa có trong lớp cơ sở.

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
0

Phương thức bark() chỉ có trong lớp Dog mà không có trong lớp Animal.

Hàm super()

Đôi khi bạn ghi đè một phương thức của lớp cơ sở nhưng muốn sử dụng lại phương thức của lớp cơ sở và thêm vào một số tính năng mới. Bạn có thể sử dụng hàm super() để làm điều này.

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
1

Kế thừa từ nhiều lớp cơ sở – Multiple Inheritance

Python cho phép một lớp có thể kế thừa từ nhiều lớp cở sở.

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
2

Lớp con Bird kế toàn tất cả các phương thức của lớp Animal và FlyingAnimal.

Video demo

Tổng kết

Thừa kế là kiến thức rất quan trọng trong lập trình hướng đối tượng. Các bạn hãy thực hành thật tốt phần này nhé.