super() không "gọi class cha" mà ủy quyền cho class kế tiếp trong MRO (Method Resolution Order) của instance thực tế. MRO tính bằng thuật toán C3 linearization, phụ thuộc lớp cụ thể đang khởi tạo chứ không cố định vào lớp bạn viết super().
Nhờ đó, trong đa kế thừa, nếu mọi class trong cây đều gọi super().method(...), chuỗi ủy quyền sẽ nối qua tất cả class đúng một lần theo MRO — gọi là cooperative multiple inheritance.
Điều kiện để hợp tác đúng: các method cùng chữ ký (hoặc dùng args, *kwargs) và mỗi class đều gọi super(). Nếu một class quên gọi, chuỗi bị đứt.