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