Bài trước chúng ta tìm hiểu về biến tĩnh trong Python. Bài viết này CodeTuTam sẽ hướng dẫn bạn tìm hiểu về Class Method và Static Method trong Python. Đồng thời chúng ta cũng sẽ làm rõ hơn khi nào thì dùng class method, khi nào thì dùng static method.
Decorator là 1 function với tham số đầu vào là 1 function và trả về cũng là 1 function.
Một class method sẽ nhận class dưới dạng tham số ngầm định đầu tiên – việc này giống như các instance method nhận self là tham số đầu tiên của hàm
Cú pháp Class method trong Python
class C(object): @classmethod def fun(cls, arg1, arg2, ...): .... fun: function that needs to be converted into a class method returns: a class method for function.
Các đặc điểm của class method
Một hàm tĩnh trong Python sẽ không nhận tham số ngầm định đầu tiên. Một static method cũng là một phương thức được liên kết với class chứ không phải các instance. Nó được gắn trong class vì bản thân hàm này có ý nghĩa đối với các phương thức có mặt trong class đó.
Static method này giống như class method, chỉ khác là không có tham số ngầm định.
Cú pháp hàm tĩnh trong Python
class C(object): @staticmethod def fun(arg1, arg2, ...): ... returns: a static method for function fun.
Điểm khác nhau giữa class method và static method là
Để hiểu rõ cách hoạt động của class method và static method, chúng ta làm thử ví dụ tạo class Person. Hiện tại thì Python không hỗ trợ cơ chế overloading giống trong C++ hay Java do vậy chúng ta sẽ sử dụng class method để tạo factory method.
Trong ví dụ dưới dây, chúng ta tạo một class method để tạo 1 đối tượng person từ năm sinh.
Như đã giải thích ở trên, chúng tôi sử dụng các static method để tạo các hàm tiện ích. Trong ví dụ dưới đây, chúng ta sử dụng static method để kiểm tra một người có phải là người lớn hay không.
Ví dụ về Static Method
class MyClass: def __init__(self, value): self.value = value @staticmethod def get_max_value(x, y): return max(x, y) # Create an instance of MyClass obj = MyClass(10) print(MyClass.get_max_value(20, 30)) print(obj.get_max_value(20, 30))
Kết quả
30 30
Ví dụ đầy đủ về class method và static method
# Python program to demonstrate # use of class method and static method. from datetime import date class Person: def __init__(self, name, age): self.name = name self.age = age # a class method to create a Person object by birth year. @classmethod def fromBirthYear(cls, name, year): return cls(name, date.today().year - year) # a static method to check if a Person is adult or not. @staticmethod def isAdult(age): return age > 18 person1 = Person('mayank', 21) person2 = Person.fromBirthYear('mayank', 1996) print(person1.age) print(person2.age) # print the result print(Person.isAdult(22))
Kết quả
21 25 True
Bình luận: