Mình không rành Python cho lắm, nhưng mình thấy có 3 cái chưa đúng. Thứ nhất, hàm super bạn phải cho nó ít nhất một argument. Trong khi bạn không đưa cái nào.
Thứ 2, super not Super
Phải sửa thành
super(Cha, self).__init__(ten, tuoi)
# Cha ở đây để giúp super biết, gọi hàm __init__ của lớp kế thừa nào (vì Python có thể multi kế thừa.
# self ở đây truyền vào sẽ là đối tượng thuộc lớp Con, để vào đó self con được gắn thay vì self cha.
Tiếp cái thứ 3
Trong Python 3.X thì không phân biệt giữa
class A:
pass
Và
class A(object):
pass
Nhưng trong Python 2.X, cái đầu tiên được gọi là old style class. Thêm (object) gọi là new style class. Và hàm super chỉ chịu nhận một cái new style class.
Suy ra bạn phải sửa class Cha: thành class Cha(object): và tuyệt đối không được class Cha():
Nhưng mà, mình thấy cách này nó tù lắm, nên chả mấy khi dùng.
class Cha(object): # ở đây, có object hay không cũng được, vì ở dưới không dùng hàm super.
def __init__(self, ten, tuoi):
self.ten = ten
self.tuoi = tuoi
def daihoc(self):
pass
class Con(Cha):
def __init__(self,ten, tuoi, daihoc):
Cha.__init__(self, ten, tuoi)
self.daihoc = daihoc
con2 = Con('Tien',22 , 'BK')
print con2.ten
Mình có link cho bạn tham khảo thêm: