Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tạo subclass từ superclass trong Python với super()

Dùng super() - built-in function Python, cách tốt hơn để gọi parent class cho initialization.

Cách cũ (không khuyến khích)

class MySubClass(MySuperClass):
    def __init__(self):
        MySuperClass.__init__(self)  # Hardcode parent class name

Cách tốt hơn với super()

class MySubClassBetter(MySuperClass):
    def __init__(self):
        super(MySubClassBetter, self).__init__()  # Python 2

Python 3: Cú pháp đơn giản

class MySubClassBest(MySuperClass):
    def __init__(self):
        super().__init__()  # Không cần truyền class và self

Tại sao super() tốt hơn?

  • Hỗ trợ multiple inheritance đúng đắn (theo MRO)
  • Dễ refactor: đổi tên parent class không phải sửa subclass
  • Tránh gọi parent method nhiều lần trong diamond inheritance