Hướng dẫn how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong 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.

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 how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong 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

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.

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.

Một ví dụ với trực quan tương ứng được đưa ra dưới đây.

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass

Ở đâ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.

Hướng dẫn how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong python?
Di sản đa cấp trong Python

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

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.

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.

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

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

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

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.

Vì vậy, trong ví dụ trên của lớp

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
5, thứ tự tìm kiếm là [
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
5,
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
7,
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
8,
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
3]. Thứ tự này còn được gọi là tuyến tính hóa của lớp
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
5 và tập hợp các quy tắc được sử dụng để tìm thứ tự này được gọi là thứ tự phân giải phương thức (MRO).Method Resolution Order (MRO).

MRO phải ngăn chặn đặt hàng ưu tiên cục bộ và cũng cung cấp tính đơn điệu. Nó đảm bảo rằng một lớp học luôn xuất hiện trước cha mẹ của nó. Trong trường hợp của nhiều phụ huynh, thứ tự giống như các bộ dữ liệu của các lớp cơ sở.

MRO của một lớp có thể được xem là thuộc tính

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

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

# Output: True
print(isinstance("Hello",object))
1 hoặc phương thức
# Output: True
print(issubclass(list,object))

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

# Output: True
print(isinstance("Hello",object))
2. Cái trước trả lại một tuple trong khi cái sau trả lại một danh sách.

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

Dưới đây là một ví dụ kế thừa đa dạng phức tạp hơn một chút và trực quan hóa của nó cùng với MRO.

Hướng dẫn how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong python?
Hình dung nhiều kế thừa trong Python
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())

Đầu ra

[, , , , , , ]

Để biết thuật toán thực tế về cách tính toán MRO, hãy truy cập thảo luận về MRO.

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

Trong Python, mỗi lớp dù được tích hợp hoặc do người dùng xác định đều có nguồn gốc từ lớp đối tượng và tất cả các đối tượng là các thể hiện của đối tượng lớp. Do đó, lớp đối tượng là lớp cơ sở cho tất cả các lớp khác. Trong trường hợp của nhiều kế thừa, một thuộc tính nhất định lần đầu tiên được tìm kiếm trong lớp hiện tại nếu nó không tìm thấy thì nó đã tìm kiếm trong các lớp cha. Các lớp cha được tìm kiếm theo kiểu bên trái và mỗi lớp được tìm kiếm một lần. Nếu chúng ta thấy ví dụ trên thì thứ tự tìm kiếm các thuộc tính sẽ được bắt nguồn, base1, base2, object. Thứ tự được theo sau được gọi là tuyến tính hóa của lớp có nguồn gốc và thứ tự này được tìm thấy bằng cách sử dụng một tập hợp các quy tắc gọi là thứ tự phân giải phương thức (MRO). Để xem MRO của một lớp: & nbsp; & nbsp; 
When a class is derived from more than one base class it is called multiple Inheritance. The derived class inherits all the features of the base case.
 

Hướng dẫn how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong python?

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class

Sử dụng phương thức mro (), nó trả về danh sách & nbsp; ví dụ. Class4.mro ()
 

Sử dụng thuộc tính _MRO_, nó trả về một tuple & nbsp; ví dụ. Class4 .__ MRO __ & nbsp; & nbsp;
 

Hướng dẫn how do you use multilevel inheritance in python? - làm thế nào để bạn sử dụng kế thừa đa cấp trong python?

[,,,,] & nbsp; (,,,,) & nbsp; & nbsp;“m” which is an overridden method in one of Class2 and Class3 or both then the ambiguity arises which of the method “m” Class4 should inherit.
 

Làm thế nào để bạn sử dụng kế thừa đa cấp?
 

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
5
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
[, , , , , , ]
8

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
2  

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

Output:

In Class2

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP; When you call obj.m() (m on the instance of Class4) the output is In Class2. If Class4 is declared as Class4(Class3, Class2) then the output of obj.m() will be In Class3.
 

Khi phương thức được ghi đè trong một trong các lớp & nbsp;
 

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
2

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
In Class4
In Class2
In Class3
In Class1
4

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
2      

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

Output:

In Class3

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP;

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
5
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
34
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
38

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
49
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
55

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
56

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
57

Output:

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP;

Khi phương thức được ghi đè trong một trong các lớp & nbsp;In Class4. The method “m” of Class4 is executed. To execute the method “m” of the other classes it can be done using the class names.
Now, to call the method m for Class1, Class2, Class3 directly from the method “m” of the Class4 see the below example
 

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
5
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
38

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
49
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

Output:

In Class4
In Class2
In Class3
In Class1

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP;

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
3
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
5
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

Khi mọi lớp xác định cùng một phương thức

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
49
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
0
# Output: True
print(issubclass(list,object))

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

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

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

# Output: True
print(isinstance("Hello",object))
8
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

Output:

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
1

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP;
 

Khi phương thức được ghi đè trong một trong các lớp & nbsp; 

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

Khi mọi lớp xác định cùng một phương thức

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
8

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
0

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
49
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
3
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
4
Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
5

Syntax:

Class Base1:
       Body of the class

Class Base2:
     Body of the class

Class Derived(Base1, Base2):
     Body of the class
6

Output:

In Class4
In Class2
In Class3
In Class1

Lưu ý: Khi bạn gọi obj.m () (m trên thể hiện của class4), đầu ra nằm trong Class2. Nếu Class4 được khai báo là Class4 (Class3, Class2) thì đầu ra của obj.m () sẽ nằm trong Class3. & NBSP;method resolution order (MRO).
 

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

Trong Python, mỗi lớp dù được tích hợp hoặc do người dùng xác định đều có nguồn gốc từ lớp đối tượng và tất cả các đối tượng là các thể hiện của đối tượng lớp. Do đó, lớp đối tượng là lớp cơ sở cho tất cả các lớp khác. Trong trường hợp của nhiều kế thừa, một thuộc tính nhất định lần đầu tiên được tìm kiếm trong lớp hiện tại nếu nó không tìm thấy thì nó đã tìm kiếm trong các lớp cha. Các lớp cha được tìm kiếm theo kiểu bên trái và mỗi lớp được tìm kiếm một lần. Nếu chúng ta thấy ví dụ trên thì thứ tự tìm kiếm các thuộc tính sẽ được bắt nguồn, base1, base2, object. Thứ tự được theo sau được gọi là tuyến tính hóa của lớp có nguồn gốc và thứ tự này được tìm thấy bằng cách sử dụng một tập hợp các quy tắc gọi là thứ tự phân giải phương thức (MRO). Để xem MRO của một lớp: & nbsp; & nbsp;
In the case of multiple inheritance, a given attribute is first searched in the current class if it’s not found then it’s searched in the parent classes. The parent classes are searched in a left-right fashion and each class is searched once.
If we see the above example then the order of search for the attributes will be Derived, Base1, Base2, object. The order that is followed is known as a linearization of the class Derived and this order is found out using a set of rules called Method Resolution Order (MRO).
To view the MRO of a class: 
 

  • Sử dụng phương thức mro (), nó trả về danh sách & nbsp; ví dụ. Class4.mro ()
    Eg. Class4.mro()
  • Sử dụng thuộc tính _MRO_, nó trả về một tuple & nbsp; ví dụ. Class4 .__ MRO __ & nbsp; & nbsp;
    Eg. Class4.__mro__ 
     

Example:  

Python3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
5
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
[, , , , , , ]
7
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

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

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

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

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

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

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

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
2
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
49
class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass
50

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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

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

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

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
1
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
09

>>> MultiDerived.__mro__
(,
 ,
 ,
 )

>>> MultiDerived.mro()
[,
 ,
 ,
 ]
1
# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [, ,
#  , ,
#  , ,
#  ]

print(M.mro())
11

Output:

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

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

# Output: True
print(isinstance("Hello",object))
3
>>> MultiDerived.__mro__
(,
 ,
 ,
 )

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


>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() [, , , ]0>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() [, , , ]1>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() [, , , ]2# Demonstration of MRO class X: pass class Y: pass class Z: pass class A(X, Y): pass class B(Y, Z): pass class M(B, A, Z): pass # Output: # [, , # , , # , , # ] print(M.mro())5>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() [, , , ]4

Trong kế thừa đa cấp, một lớp dẫn xuất sẽ kế thừa một lớp cơ sở và cũng như lớp dẫn xuất cũng đóng vai trò là lớp cơ sở cho lớp khác.Ví dụ, ba lớp được gọi là A, B và C, như được hiển thị trong hình ảnh dưới đây, trong đó lớp C có nguồn gốc từ lớp B và lớp B, có nguồn gốc từ lớp A.a derived class will inherit a base class and as well as the derived class also act as the base class to other class. For example, three classes called A, B, and C, as shown in the below image, where class C is derived from class B and class B, is derived from class A.

Làm thế nào để bạn sử dụng thừa kế trong Python?

Sử dụng hàm Super () bằng cách sử dụng hàm Super (), bạn không phải sử dụng tên của phần tử cha, nó sẽ tự động kế thừa các phương thức và thuộc tính từ cha mẹ của nó. By using the super() function, you do not have to use the name of the parent element, it will automatically inherit the methods and properties from its parent.