Show 1. Class Method – Phương thức thuộc về lớpCái decorator @classmethod là một function decorator được tích hợp sẵn của Python, nó là một biểu thức mà được xử lý sau khi hàm của bạn được định nghĩa. Kết quả của phép xử lý biểu thức đó sẽ được phản chiếu lên phần code định nghĩa hàm của bạn. Một class method (phương thức/hàm thuộc về lớp nào đó) mà nhận vào một class khác làm đối số ngầm định đầu tiên, sẽ giống như một instance method (phương thức/hàm thuộc về một thể hiện/đối tượng của lớp nào đó) nhận vào một instance. 1. Cú pháp
Trong đó: – fun: Là hàm mà cần chuyển đổi thành một class methodfun: Là hàm mà cần chuyển đổi thành một class method – returns: một class method dành cho hàm này sẽ được trả về.returns: một class method dành cho hàm này sẽ được trả về. Một class method là một method – phương thức mà được gắn với class, mà không phải là gắn với đối tượng của class. Các class methods có quyền truy cập đến trạng thái của class, bởi vì chúng đều nhận vào một tham số mà trỏ đến class, chứ không phải trỏ đến đối tượng/thể hiện. Class method có thể thay đổi trạng thái của một class, và sự thay đổi này có thể tác động tới tất cả các thể hiện của class này. Ví dụ, nó có thể thay đổi một biến của class, trong khi biến này được sử dụng bởi tất cả các thể hiện của class. 2. Static method – Phương thức tĩnh3. Class method và Static method 1. Cú pháp
Trong đó: – fun: Là hàm mà cần chuyển đổi thành một class method: Một static method dành cho hàm fun – returns: một class method dành cho hàm này sẽ được trả về. Một class method là một method – phương thức mà được gắn với class, mà không phải là gắn với đối tượng của class. Các class methods có quyền truy cập đến trạng thái của class, bởi vì chúng đều nhận vào một tham số mà trỏ đến class, chứ không phải trỏ đến đối tượng/thể hiện. Class method có thể thay đổi trạng thái của một class, và sự thay đổi này có thể tác động tới tất cả các thể hiện của class này. Ví dụ, nó có thể thay đổi một biến của class, trong khi biến này được sử dụng bởi tất cả các thể hiện của class. Static method không nhận vào đối số đầu tiên ngầm định nào. returns: Một static method dành cho hàm fun Một static method là một method – phương thức mà được gắn với class, chứ không phải gắn với đối tượng của class. 4. Khi nào nên sử dụng cái nào?5. Làm thế nào để khai báo class method và static method? Cái decorator @classmethod là một function decorator được tích hợp sẵn của Python, nó là một biểu thức mà được xử lý sau khi hàm của bạn được định nghĩa. Kết quả của phép xử lý biểu thức đó sẽ được phản chiếu lên phần code định nghĩa hàm của bạn. Một class method (phương thức/hàm thuộc về lớp nào đó) mà nhận vào một class khác làm đối số ngầm định đầu tiên, sẽ giống như một instance method (phương thức/hàm thuộc về một thể hiện/đối tượng của lớp nào đó) nhận vào một instance. 5. Làm thế nào để khai báo class method và static method?Cái decorator @classmethod là một function decorator được tích hợp sẵn của Python, nó là một biểu thức mà được xử lý sau khi hàm của bạn được định nghĩa. Kết quả của phép xử lý biểu thức đó sẽ được phản chiếu lên phần code định nghĩa hàm của bạn. Một class method (phương thức/hàm thuộc về lớp nào đó) mà nhận vào một class khác làm đối số ngầm định đầu tiên, sẽ giống như một instance method (phương thức/hàm thuộc về một thể hiện/đối tượng của lớp nào đó) nhận vào một instance. 1. Cú pháp Trong đó: – fun: Là hàm mà cần chuyển đổi thành một class method
– returns: một class method dành cho hàm này sẽ được trả về.
Một class method là một method – phương thức mà được gắn với class, mà không phải là gắn với đối tượng của class.
Class method có thể thay đổi trạng thái của một class, và sự thay đổi này có thể tác động tới tất cả các thể hiện của class này. Ví dụ, nó có thể thay đổi một biến của class, trong khi biến này được sử dụng bởi tất cả các thể hiện của class.
Static method không thể truy cập hay sửa đổi trạng thái của class.
Chúng ta cùng xem một ví dụ sau để hiểu được sự khác biệt giữa class method và static method. Giả sử, chúng ta muốn tạo ra một class Person. Lúc này, Python không hỗ trợ nạp chồng phương thức (method overloading) giống như C++ hoặc Java, vì vậy chúng ta sẽ sử dụng các class methods để tạo ra các factory methods. Trong ví dụ dưới đây, chúng ta sẽ sử dụng một class method để tạo ra một đối tượng person từ birth year (thông tin về năm sinh). Như đã giải thích ở trên, chúng ta sẽ sử dụng các static methods để tạo ra các hàm tiện ích – utility functions. Trong ví dụ dưới đây, chúng ta sẽ sử dụng một static method để kiểm tra xem một person (người) có phải là adult (người lớn) hay không. |