Python động thêm phương thức vào lớp

Trong lập trình hướng đối tượng, chúng ta sử dụng các phương thức thể hiện và phương thức lớp. Bên trong một Class, chúng ta có thể định nghĩa 3 loại phương thức sau

  • phương thức sơ thẩm. Được sử dụng để truy cập hoặc sửa đổi trạng thái đối tượng. Nếu chúng ta sử dụng các biến thể hiện bên trong một phương thức, thì các phương thức đó được gọi là phương thức thể hiện. Nó phải có tham số
    Jessa's age is: 20
    John's age is: 26
    5 để chỉ đối tượng hiện tại
  • phương pháp lớp. Được sử dụng để truy cập hoặc sửa đổi trạng thái lớp. Trong triển khai phương thức, nếu chúng ta chỉ sử dụng các biến lớp, thì loại phương thức đó chúng ta nên khai báo như một phương thức lớp. Phương thức lớp có tham số
    Jessa's age is: 20
    John's age is: 26
    6 đề cập đến lớp
  • phương pháp tĩnh. Đó là một phương pháp tiện ích chung thực hiện một nhiệm vụ trong sự cô lập. Bên trong phương thức này, chúng tôi không sử dụng biến đối tượng hoặc lớp vì phương thức tĩnh này không nhận bất kỳ tham số nào như
    Jessa's age is: 20
    John's age is: 26
    5 và
    Jessa's age is: 20
    John's age is: 26
    6

Ngoài ra, hãy đọc Phương thức lớp Python so với phương thức tĩnh so với phương thức sơ thẩm

Sau khi đọc bài viết này, bạn sẽ học được

  • Cách tạo và sử dụng các phương thức lớp trong Python
  • Tạo phương thức lớp bằng cách sử dụng trình trang trí
    Jessa's age is: 20
    John's age is: 26
    9 và hàm
    classmethod[function]
    0
  • cách tự động thêm hoặc xóa các phương thức lớp

Mục lục

  • Phương thức lớp trong Python là gì
  • Xác định phương thức lớp
    • ví dụ 1. Tạo phương thức lớp bằng Trình trang trí @classmethod
    • ví dụ 2. Tạo phương thức lớp bằng hàm classmethod[]
    • ví dụ 3. Truy cập các biến lớp trong các phương thức lớp
  • Phương thức lớp trong kế thừa
  • Tự động thêm phương thức lớp vào một lớp
  • Tự động xóa các phương thức lớp

Phương thức lớp trong Python là gì

Các phương thức lớp là các phương thức được gọi trên chính lớp đó, không phải trên một thể hiện đối tượng cụ thể. Do đó, nó thuộc về một cấp độ lớp và tất cả các thể hiện của lớp đều chia sẻ một phương thức lớp

  • Một phương thức lớp được liên kết với lớp chứ không phải đối tượng của lớp. Nó chỉ có thể truy cập các biến lớp
  • Nó có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp

Trong triển khai phương thức, nếu chúng ta chỉ sử dụng các biến lớp, chúng ta nên khai báo các phương thức đó là phương thức lớp. Phương thức lớp có tham số đầu tiên là

Jessa's age is: 20
John's age is: 26
6, tham chiếu đến lớp

Các phương thức lớp được sử dụng khi chúng ta xử lý các phương thức xuất xưởng. Các phương thức xuất xưởng là những phương thức trả về một đối tượng lớp cho các trường hợp sử dụng khác nhau. Do đó, các phương thức xuất xưởng tạo ra các triển khai cụ thể của một giao diện chung

Phương thức lớp có thể được gọi bằng cách sử dụng

classmethod[function]
2 cũng như bằng cách sử dụng một đối tượng của lớp

Xác định phương thức lớp

Xác định phương thức lớp

Bất kỳ phương thức nào chúng ta tạo trong một lớp sẽ tự động được tạo dưới dạng phương thức thể hiện. Chúng ta phải nói rõ ràng với Python rằng đó là một phương thức lớp sử dụng trình trang trí

Jessa's age is: 20
John's age is: 26
9 hoặc hàm
classmethod[function]
0

Các phương thức của lớp được xác định bên trong một lớp và nó khá giống với việc xác định một hàm thông thường

Giống như, bên trong một phương thức thể hiện, chúng tôi sử dụng từ khóa

Jessa's age is: 20
John's age is: 26
5 để truy cập hoặc sửa đổi các biến thể hiện. Tương tự bên trong phương thức lớp, chúng tôi sử dụng từ khóa
Jessa's age is: 20
John's age is: 26
6 làm tham số đầu tiên để truy cập các biến lớp. Do đó, phương thức lớp cho phép chúng ta kiểm soát việc thay đổi trạng thái lớp

  • Bạn có thể sử dụng một biến được đặt tên khác cho 
    Jessa's age is: 20
    John's age is: 26
    6, nhưng điều này không được khuyến khích vì self là quy ước được đề xuất trong Python
  • Phương thức lớp chỉ có thể truy cập các thuộc tính lớp, không phải thuộc tính thể hiện

ví dụ 1. Tạo phương thức lớp bằng Trình trang trí @classmethod

Để tạo một phương thức làm phương thức lớp, hãy thêm trình trang trí

Jessa's age is: 20
John's age is: 26
9 trước định nghĩa phương thức và thêm
Jessa's age is: 20
John's age is: 26
6 làm tham số đầu tiên cho phương thức

Trình trang trí

Jessa's age is: 20
John's age is: 26
9 là một trình trang trí chức năng tích hợp. Trong Python, chúng tôi sử dụng trình trang trí
Jessa's age is: 20
John's age is: 26
9 để khai báo một phương thức là một phương thức lớp. Trình trang trí
Jessa's age is: 20
John's age is: 26
9 là một biểu thức được đánh giá sau khi chức năng của chúng tôi được xác định

Hãy xem cách tạo một phương thức xuất xưởng bằng phương thức lớp. Trong ví dụ này, chúng ta sẽ tạo một đối tượng lớp Student bằng phương thức lớp

Jessa's age is: 20
John's age is: 26
8

đầu ra

Jessa's age is: 20
John's age is: 26
  • Trong ví dụ trên, chúng ta đã tạo hai đối tượng, một đối tượng sử dụng hàm tạo và đối tượng thứ hai sử dụng phương thức
    Jessa's age is: 20
    John's age is: 26
    03
  • Hàm tạo nhận hai đối số name và age. Mặt khác, phương thức lớp lấy
    Jessa's age is: 20
    John's age is: 26
    6,
    Jessa's age is: 20
    John's age is: 26
    05 và
    Jessa's age is: 20
    John's age is: 26
    06 và trả về một thể hiện của lớp không có gì ngoài một đối tượng mới
  • Trình trang trí
    Jessa's age is: 20
    John's age is: 26
    9 được sử dụng để chuyển đổi phương thức
    Jessa's age is: 20
    John's age is: 26
    03 thành phương thức lớp
  • Phương thức
    Jessa's age is: 20
    John's age is: 26
    03 lấy lớp Student [
    Jessa's age is: 20
    John's age is: 26
    6] làm tham số đầu tiên và trả về hàm tạo bằng cách gọi
    Jessa's age is: 20
    John's age is: 26
    81, tương đương với
    Jessa's age is: 20
    John's age is: 26
    82

ví dụ 2. Tạo phương thức lớp bằng hàm classmethod[]

Ngoài một công cụ trang trí, hàm tích hợp sẵn

classmethod[function]
0 được sử dụng để chuyển đổi một phương thức bình thường thành một phương thức lớp.
Jessa's age is: 20
John's age is: 26
84 là một hàm có sẵn trong Python, hàm này trả về một phương thức lớp cho một hàm nhất định

cú pháp

classmethod[function]
  • Jessa's age is: 20
    John's age is: 26
    85. Đó là tên của phương thức bạn muốn chuyển thành phương thức lớp
  • Nó trả về phương thức lớp đã chuyển đổi

Ghi chú. Phương thức bạn muốn chuyển thành phương thức lớp phải chấp nhận lớp [

Jessa's age is: 20
John's age is: 26
6] làm đối số đầu tiên, giống như phương thức thể hiện nhận thể hiện [
Jessa's age is: 20
John's age is: 26
5]

Như chúng ta đã biết, phương thức lớp được liên kết với lớp chứ không phải đối tượng. Vì vậy, chúng ta có thể gọi phương thức lớp bằng cả cách gọi lớp và đối tượng

Hàm

classmethod[function]
0 là cách cũ hơn để tạo phương thức lớp trong Python. Trong phiên bản Python mới hơn, chúng ta nên sử dụng trình trang trí
Jessa's age is: 20
John's age is: 26
9 để tạo một phương thức lớp

Thí dụ. Tạo phương thức lớp bằng hàm

classmethod[function]
0

Jessa's age is: 20
John's age is: 26
0

đầu ra

Jessa's age is: 20
John's age is: 26
8

ví dụ 3. Truy cập các biến lớp trong các phương thức lớp

Sử dụng phương thức của lớp, chúng ta chỉ có thể truy cập hoặc sửa đổi các biến của lớp. Hãy xem cách truy cập và sửa đổi các biến lớp trong phương thức lớp

Các biến lớp được chia sẻ bởi tất cả các phiên bản của một lớp. Sử dụng phương thức lớp, chúng ta có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp

Jessa's age is: 20
John's age is: 26
1

đầu ra

Jessa's age is: 20
John's age is: 26
2

Phương thức lớp trong kế thừa

Trong kế thừa, phương thức lớp của lớp cha có sẵn cho lớp con

Hãy tạo một lớp Xe có chứa một phương thức lớp xuất xưởng from_price[] sẽ trả về một thể hiện Xe từ một mức giá. Khi chúng ta gọi cùng một phương thức bằng tên lớp của đứa trẻ, nó sẽ trả về đối tượng lớp của đứa trẻ

Bất cứ khi nào chúng ta dẫn xuất một lớp từ lớp cha có phương thức lớp thì nó sẽ tạo ra thể hiện chính xác của lớp dẫn xuất. Ví dụ sau đây cho thấy phương thức lớp hoạt động như thế nào trong kế thừa

Thí dụ

Jessa's age is: 20
John's age is: 26
3

đầu ra

Jessa's age is: 20
John's age is: 26
4

Tự động thêm phương thức lớp vào một lớp

Thông thường, chúng ta thêm các phương thức lớp vào thân lớp khi định nghĩa một lớp. Tuy nhiên, Python là một ngôn ngữ động cho phép chúng ta thêm hoặc xóa các phương thức trong thời gian chạy. Do đó, sẽ hữu ích khi bạn muốn mở rộng chức năng của lớp mà không thay đổi cấu trúc cơ bản của nó vì nhiều hệ thống sử dụng cùng một cấu trúc

Chúng ta cần sử dụng hàm

classmethod[function]
0 để thêm một phương thức lớp mới vào một lớp

Thí dụ

Hãy xem cách thêm một phương thức lớp mới trong lớp Sinh viên khi chạy

Jessa's age is: 20
John's age is: 26
6

đầu ra

Jessa's age is: 20
John's age is: 26
0

Tự động xóa các phương thức lớp

Chúng ta có thể tự động xóa các phương thức lớp khỏi lớp. Trong Python, có hai cách để làm điều đó

  • Bằng cách sử dụng toán tử 
    Jessa's age is: 20
    John's age is: 26
    12 
  • Bằng cách sử dụng phương pháp 
    Jessa's age is: 20
    John's age is: 26
    13 

Bằng cách sử dụng toán tử 

Jessa's age is: 20
John's age is: 26
12 

Toán tử 

Jessa's age is: 20
John's age is: 26
12 xóa phương thức thể hiện được lớp thêm vào. Sử dụng cú pháp
Jessa's age is: 20
John's age is: 26
16 để xóa phương thức lớp

Thí dụ

Trong ví dụ này, chúng ta sẽ xóa phương thức lớp có tên 

Jessa's age is: 20
John's age is: 26
17 khỏi lớp Sinh viên. Nếu bạn cố truy cập sau khi xóa nó, bạn sẽ gặp Lỗi thuộc tính

Jessa's age is: 20
John's age is: 26
1

đầu ra

Jessa's age is: 20
John's age is: 26
2

Bằng cách sử dụng phương pháp

Jessa's age is: 20
John's age is: 26
18

Phương thức

Jessa's age is: 20
John's age is: 26
13 được sử dụng để xóa thuộc tính và phương thức được đặt tên khỏi lớp. Đối số của
Jessa's age is: 20
John's age is: 26
20 là một đối tượng và chuỗi. Chuỗi phải là tên của thuộc tính hoặc tên phương thức

Python cho phép thêm các phương thức động như thế nào?

Thêm động các phương thức trong Python .
từ các loại nhập MethodType class Person[object]. def __init__[bản thân, tên]. bản thân. .
lớp Người [đối tượng]. def __init__[bản thân, tên]. bản thân. .
lớp UpperList [danh sách]. vượt qua def to_upper[self]. cho chỉ mục, mục trong liệt kê [bản thân]. bản thân [chỉ mục] = mục

Phương thức __ add __ trong Python là gì?

Hàm Python __add__[] là một trong những phương thức kỳ diệu trong Python trả về một đối tượng mới[thứ ba] i. e. việc thêm hai đối tượng còn lại . Nó triển khai toán tử cộng “+” trong Python.

MethodType trong Python là gì?

Cách sử dụng phổ biến của các loại. MethodType là kiểm tra xem đối tượng nào đó có phải là phương thức hay không . Ví dụ. >>> nhập loại >>> lớp A[đối tượng]. . phương pháp def [tự]. . đi qua. >>>

Chủ Đề