Câu hỏi phỏng vấn Python
Câu hỏi

What is MRO in Pytho...

Câu trả lời

What is MRO in Python?

Method Resolution Order (MRO) in Python is a concept used in the context of multiple inheritance and describes the order in which Python looks for a method in a hierarchy of classes. Understanding MRO is crucial because it defines how Python will search for inherited methods in complex class structures.

How does MRO work?

Basic Concept

MRO determines the sequence in which base classes are searched when executing a method. First, the method or attribute is searched within the current class. If it's not found, Python then searches in the parent classes. The search order follows the class hierarchy from bottom to top and left to right, ensuring that no class is visited more than once in the search path[1][2][5].

In Python, the MRO uses a depth-first, left-to-right search algorithm. This means that Python first looks for methods in the current class. If it doesn't find the method, it moves to the first parent class, searches there, and continues this pattern recursively. If the first parent class doesn’t have the method, Python moves to the next parent class in the order they are specified in the class definition[1][2][4][5].

C3 Linearization

Python 2.3 and later versions use the C3 linearization algorithm to calculate the MRO. This algorithm offers a way to linearize the inheritance graph in such a manner that preserves the order of each parent class while keeping the inheritance graph consistent and predictable. The C3 algorithm ensures that a class always appears before its parents and that the order of parents is preserved[6][7][8].

Practical Example

Consider the following Python classes:

python Copy
class A:
    def method(self):
        print("Method from A")

clas...
senior

senior

Gợi ý câu hỏi phỏng vấn

middle

What does an x = y or z assignment do in Python?

middle

What is introspection/reflection and does Python support it?

middle

Explain the UnboundLocalError exception and how to avoid it?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào