Gọi hàm tạo cha mẹ Python

Từ khóa super được sử dụng để gọi hàm tạo của lớp cha để truy cập các thuộc tính và phương thức của lớp cha

Mẹo. Để hiểu rõ hơn về khái niệm "kế thừa" (lớp cha và lớp con), hãy đọc Hướng dẫn về lớp JavaScript của chúng tôi


Thí dụ

Tạo một lớp có tên "Model" sẽ kế thừa các phương thức từ lớp "Car" bằng cách sử dụng từ khóa extends

Bằng cách gọi phương thức super() trong phương thức khởi tạo, chúng ta gọi phương thức khởi tạo của cha mẹ và có quyền truy cập vào các thuộc tính và phương thức của cha mẹ

Kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác

Lớp cha là lớp được kế thừa từ đó, còn được gọi là lớp cơ sở

Lớp con là lớp kế thừa từ lớp khác, còn gọi là lớp dẫn xuất


Tạo một lớp cha

Bất kỳ lớp nào cũng có thể là lớp cha, vì vậy cú pháp giống như tạo bất kỳ lớp nào khác

Thí dụ

Tạo một lớp có tên Person, với các thuộc tính firstnamelastname và một phương thức printname

lớp Người.
  def __init__(self, fname, lname).
    bản thân. firstname = fname
    bản thân. họ = tên

  def printname(self).
    print(self. tên, bản thân. họ)

#Sử dụng lớp Person để tạo một đối tượng, sau đó thực thi phương thức printname

x = Person("John", "Doe")
x. tên in ()

Tự mình thử »


Tạo một lớp con

Để tạo một lớp kế thừa chức năng từ một lớp khác, hãy gửi lớp cha dưới dạng tham số khi tạo lớp con

Thí dụ

Tạo một lớp có tên là Student, lớp này sẽ kế thừa các thuộc tính và phương thức từ lớp Person

Sinh viên lớp(Người).
  vượt qua

Ghi chú. Sử dụng từ khóa pass khi bạn không muốn thêm bất kỳ thuộc tính hoặc phương thức nào khác vào lớp

Bây giờ lớp Sinh viên có các thuộc tính và phương thức giống như lớp Người

Thí dụ

Sử dụng lớp Student để tạo một đối tượng, sau đó thực thi phương thức printname

x = Sinh viên("Mike", "Olsen")
x. tên in ()

Tự mình thử »



Thêm chức năng __init__()

Cho đến giờ chúng ta đã tạo một lớp con kế thừa các thuộc tính và phương thức từ lớp cha của nó.

Chúng tôi muốn thêm hàm extends2 vào lớp con (thay vì từ khóa pass)

Ghi chú. Hàm extends2 được gọi tự động mỗi khi lớp được sử dụng để tạo một đối tượng mới

Thí dụ

Thêm hàm extends2 vào lớp Student

Sinh viên lớp(Người).
  def __init__(self, fname, lname).
    #add thuộc tính, v.v.

Khi bạn thêm hàm extends2, lớp con sẽ không kế thừa hàm extends2 của lớp cha nữa

Ghi chú. Hàm extends2 của con ghi đè quyền kế thừa của hàm extends2 của cha

Để giữ tính kế thừa của hàm extends2 của cha mẹ, hãy thêm lệnh gọi tới hàm extends2 của cha mẹ

Thí dụ

Sinh viên lớp(Người).
  def __init__(self, fname, lname).
    Người. __init__(self, fname, lname)

Tự mình thử »

Bây giờ chúng ta đã thêm thành công hàm __init__() và giữ nguyên tính kế thừa của lớp cha và chúng ta đã sẵn sàng để thêm chức năng vào hàm extends2


Sử dụng hàm super()

Python cũng có một hàm lastname1 sẽ làm cho lớp con kế thừa tất cả các phương thức và thuộc tính từ lớp cha của nó

Thí dụ

Sinh viên lớp(Người).
  def __init__(self, fname, lname).
    super(). __init__(tên, tên)

Tự mình thử »

Bằng cách sử dụng hàm lastname1, bạn không cần phải sử dụng tên của phần tử cha, nó sẽ tự động kế thừa các phương thức và thuộc tính từ cha của nó


Thêm thuộc tính

Thí dụ

Thêm một thuộc tính có tên là lastname3 vào lớp Student

Sinh viên lớp(Người).
  def __init__(self, fname, lname).
    super(). __init__(fname, lname)
    bản thân. năm tốt nghiệp = 2019

Tự mình thử »

Trong ví dụ bên dưới, năm lastname5 phải là một biến và được chuyển vào lớp Student khi tạo đối tượng sinh viên. Để làm như vậy, hãy thêm một tham số khác vào hàm __init__()

Thí dụ

Thêm tham số lastname7 và chuyển đúng năm khi tạo đối tượng

Sinh viên lớp(Người).
  def __init__(self, fname, lname, year).
    super(). __init__(fname, lname)
    bản thân. năm tốt nghiệp = năm

x = Sinh viên("Mike", "Olsen", 2019)

Tự mình thử »


Thêm phương pháp

Thí dụ

Thêm một phương thức có tên là lastname8 vào lớp Student

Sinh viên lớp(Người).
  def __init__(self, fname, lname, year).
    super(). __init__(fname, lname)
    bản thân. năm tốt nghiệp = năm

  def welcome(self).
    print("Chào mừng", tự. tên, bản thân. họ, "đến lớp", tự. năm tốt nghiệp)

Tự mình thử »

Nếu bạn thêm một phương thức trong lớp con trùng tên với một hàm trong lớp cha, thì tính kế thừa của phương thức cha sẽ bị ghi đè


Kiểm tra bản thân với các bài tập

Bài tập

Cú pháp chính xác để tạo một lớp có tên là Sinh viên sẽ kế thừa các thuộc tính và phương thức từ một lớp có tên là Người?

Làm thế nào chúng ta có thể gọi một hàm tạo của lớp cha?

Để gọi hàm tạo của lớp cha, chúng ta có thể sử dụng từ khóa super . Phương thức super() từ phương thức khởi tạo được sử dụng để gọi phương thức khởi tạo của lớp cha để có quyền truy cập vào các thuộc tính và phương thức của lớp cha.

Một đứa trẻ có thể gọi một hàm tạo của cha mẹ không?

Nếu lớp cha triển khai hàm tạo có đối số và không có hàm tạo không có đối số, thì hàm tạo con phải gọi rõ ràng hàm tạo của cha .

Hàm tạo cha mẹ Python là gì?

Trong Python, hàm tạo của lớp dùng để tạo một đối tượng (thể hiện) và gán giá trị cho các thuộc tính . Hàm tạo của lớp con luôn được gọi đến hàm tạo của lớp cha để khởi tạo giá trị cho các thuộc tính trong lớp cha, sau đó nó bắt đầu gán giá trị cho các thuộc tính của nó.