Khi hai lớp Python cung cấp cùng một bộ phương thức với các cách triển khai khác nhau, thì các lớp đó có tính đa hình và được cho là có cùng giao diện. Một giao diện theo nghĩa này có thể liên quan đến một lớp kế thừa chung và một tập hợp các phương thức được ghi đè. Điều này cho phép sử dụng hai đối tượng theo cùng một cách bất kể loại riêng lẻ của chúng
Khi một lớp con ghi đè một phương thức của lớp cha, thì kiểu của đối tượng sẽ xác định phiên bản của phương thức được gọi. Nếu đối tượng là một thể hiện của lớp con, thì phiên bản lớp con của phương thức bị ghi đè sẽ được gọi. Mặt khác, nếu đối tượng là một thể hiện của lớp cha, thì phiên bản lớp cha của phương thức được gọi là
Tham số self
là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp
Nó không nhất thiết phải được đặt tên là self
, bạn có thể gọi nó là gì tùy thích, nhưng nó phải là tham số đầu tiên của bất kỳ chức năng nào trong lớp
Các ví dụ trên là các lớp và đối tượng ở dạng đơn giản nhất và không thực sự hữu ích trong các ứng dụng thực tế
Để hiểu ý nghĩa của các lớp, chúng ta phải hiểu hàm __init__[] tích hợp sẵn
Tất cả các lớp đều có một hàm gọi là __init__[], hàm này luôn được thực thi khi lớp bắt đầu
Sử dụng hàm __init__[] để gán giá trị cho thuộc tính đối tượng hoặc các thao tác khác cần thực hiện khi đối tượng được tạo
Thí dụ
Tạo một lớp tên là Person, sử dụng hàm __init__[] để gán giá trị cho tên và tuổi
lớp Người.
def __init__[bản thân, tên, tuổi].
bản thân. tên = tên
bản thân. tuổi = tuổi
p1 = Người["John", 36]
in[p1. tên]
in[p1. tuổi]
Ghi chú. Hàm __init__[]
được gọi tự động mỗi khi lớp được sử dụng để tạo một đối tượng mới
Hàm __str__[]
Hàm __str__[] kiểm soát những gì sẽ được trả về khi đối tượng lớp được biểu diễn dưới dạng chuỗi
Nếu hàm __str__[] không được đặt, thì biểu diễn chuỗi của đối tượng được trả về
Thí dụ
Biểu diễn chuỗi của một đối tượng KHÔNG CÓ hàm __str__[]
lớp Người.
def __init__[bản thân, tên, tuổi].
bản thân. tên = tên
bản thân. tuổi = tuổi
p1 = Người["John", 36]
bản in[p1]
Tự mình thử »Thí dụ
Biểu diễn chuỗi của một đối tượng VỚI hàm __str__[]
lớp Người.
def __init__[bản thân, tên, tuổi].
bản thân. tên = tên
bản thân. tuổi = tuổi
def __str__[self].
return f"{self. tên}[{bản thân. tuổi}]"
p1 = Người["John", 36]
bản in[p1]
Tự mình thử »phương pháp đối tượng
Các đối tượng cũng có thể chứa các phương thức. Các phương thức trong các đối tượng là các chức năng thuộc về đối tượng
Hãy để chúng tôi tạo một phương thức trong lớp Person
Thí dụ
Chèn một hàm in lời chào và thực hiện nó trên đối tượng p1
lớp Người.
def __init__[bản thân, tên, tuổi].
bản thân. tên = tên
bản thân. tuổi = tuổi
def myfunc[self].
print["Xin chào tôi tên là " + tự. tên]
p1 = Person["John", 36]
p1. myfunc[]
Ghi chú. Tham số self
là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp
Tham số bản thân
Tham số self
là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp
Nó không nhất thiết phải được đặt tên là self
, bạn có thể gọi nó là gì tùy thích, nhưng nó phải là tham số đầu tiên của bất kỳ chức năng nào trong lớp
Thí dụ
Sử dụng các từ mysillyobject và abc thay vì self
lớp Người.
def __init__[mysillyobject, name, age].
mysillyobject. name = name
mysillyobject. tuổi = tuổi
def myfunc[abc].
print["Xin chào, tên tôi là " + abc. tên]
p1 = Person["John", 36]
p1. myfunc[]
Sửa đổi thuộc tính đối tượng
Bạn có thể sửa đổi các thuộc tính trên các đối tượng như thế này
Xóa thuộc tính đối tượng
Bạn có thể xóa các thuộc tính trên các đối tượng bằng cách sử dụng từ khóa del
Xóa đối tượng
Bạn có thể xóa các đối tượng bằng cách sử dụng từ khóa del
Tuyên bố vượt qua
Định nghĩa class
không thể để trống, nhưng nếu vì lý do nào đó bạn có định nghĩa class
không có nội dung, hãy đặt câu lệnh self
0 để tránh bị lỗi