01/10/2018, 00:23

Super trong python

class Person(object):

def __init__(self, name):
    ## ??
    self.name = name

    ## Person has-a pet of some kind
    self.pet = None

class Employee(Person):

def __init__(self, name, salary):
    ## ?? hmm what is this strange magic?
    super(Employee, self).__init__(name)
    ## ??
    self.salary = salary

" super(Employee, self).init(name) " nghiã là gì vậy m.n?

Lương Quang Mạnh viết 02:27 ngày 01/10/2018

super(Employee, self)

Ở đây, nó được dùng để chỉ tới class mẹ của class Employee, trường hợp này là Person mà không cần phải nêu đích xác tên ra.
Code trên tương đương:

Person.__init__(name)

# bắt đầu từ 3.0
super().__init__(name)
Tuyết Liên Hoa viết 02:23 ngày 01/10/2018

thanks bạn, tớ hiểu r

Mai Anh Dũng viết 02:31 ngày 01/10/2018

Nhớ bấm vào để chọn câu trả lời của @Luong_Quang_Manh là câu trả lời đúng

Tuyết Liên Hoa viết 02:26 ngày 01/10/2018

Em đã xem hết video dạy python của anh @ltd và em đang học đến bài 43. Em chỉ muốn hỏi là sao anh không quay tiếp chuỗi video dạy python nữa ạ?

Mai Anh Dũng viết 02:25 ngày 01/10/2018

Hiện giờ anh rất bận, nên chưa thể quay tiếp được. Mong em thông cảm.

Phan Hoang Nguyen viết 02:36 ngày 01/10/2018

Trường hợp của bạn là trường hợp đơn kế thừa và giải đáp của bạn @Luong_Quang_Manh là chính xác rồi, mình chỉ góp ý cho bạn đặt câu hỏi là nếu bạn muốn thực sự hiểu thấu đáo vấn đề này thì bạn nên tìm hiểu về đa kế thừa trong python. Khi đó bạn sẽ nhận ra đoạn code [quote=“tuyetlienhoa, post:1, topic:36509”]
super(Employee, self).init(name)
[/quote]
và [quote=“Luong_Quang_Manh, post:2, topic:36509”]
Person.init(name)
[/quote]

là không tuơng đuơng nhau nữa.
Nếu bạn thích lập trình python thì nên tìm hiểu về nó, khá là hay ho. Sau khi đọc cái đó thì sẽ tự ngộ ra vấn đề ở câu hỏi này.

Bài liên quan
0