Các phương thức Python thường có thể gây nhầm lẫn khi bạn bắt đầu lập trình hướng đối tượng [OOP]. Hướng dẫn này bao gồm ba loại phương thức chính trong Python
3 loại phương thức trong Python
Có ba loại phương thức trong Python. phương thức thể hiện, phương thức tĩnh và phương thức lớp
Biết được sự khác biệt không phải lúc nào cũng cần thiết để viết mã các tập lệnh Python cơ bản, nhưng khi bạn chuyển sang OOP, sự khác biệt có thể tạo ra sự thay đổi lớn
Nếu bạn chưa quen với Python hoặc chỉ muốn thử nghiệm mà không phải cài đặt bất kỳ thứ gì, thì hãy đảm bảo bạn truy cập các trình bao Python tương tác trực tuyến này
Trước khi chúng tôi bắt đầu. Hiểu các mẫu trang trí
Trước khi xem xét sự khác biệt, điều quan trọng là phải hiểu một mẫu thiết kế được gọi là mẫu trang trí hoặc đơn giản gọi là trang trí
Trang trí nghe có vẻ phức tạp, nhưng không có gì phải sợ. Trang trí chỉ đơn giản là chức năng. Bạn có thể tự viết chúng hoặc sử dụng những thứ có trong thư viện hoặc thư viện chuẩn Python
Giống như bất kỳ chức năng nào, decorator thực hiện một nhiệm vụ. Sự khác biệt ở đây là các bộ trang trí áp dụng logic hoặc thay đổi hành vi của các chức năng khác. Chúng là một cách tuyệt vời để sử dụng lại mã và có thể giúp phân tách logic thành các mối quan tâm riêng lẻ
Mẫu trang trí là cách ưa thích của Python để xác định các phương thức tĩnh hoặc lớp. Đây là những gì trông giống như trong Python
class DecoratorExample:
""" Example Class """
def __init__[self]:
""" Example Setup """
print['Hello, World!']
@staticmethod
def example_function[]:
""" This method is decorated! """
print['I\'m a decorated function!']
de = DecoratorExample[]
de.example_function[]
Các bộ trang trí phải ngay trước một khai báo hàm hoặc lớp. Chúng bắt đầu bằng dấu @ và không giống như các phương pháp thông thường, bạn không cần phải đặt dấu ngoặc đơn ở cuối trừ khi bạn chuyển đối số
Có thể kết hợp nhiều trình trang trí, viết của riêng bạn và áp dụng chúng cho các lớp, nhưng bạn sẽ không cần phải làm bất kỳ điều gì trong số đó cho các ví dụ này
Phương thức sơ thẩm trong Python
Các phương thức sơ thẩm là loại phương thức phổ biến nhất trong các lớp Python. Chúng được gọi như vậy vì chúng có thể truy cập dữ liệu duy nhất của phiên bản của chúng. Nếu bạn có hai đối tượng, mỗi đối tượng được tạo từ một lớp ô tô, thì mỗi đối tượng có thể có các thuộc tính khác nhau. Chúng có thể có màu sắc, kích cỡ động cơ, chỗ ngồi khác nhau, v.v.
Các phương thức sơ thẩm phải có self làm tham số, nhưng bạn không cần phải chuyển tham số này mọi lúc. Bản thân là một thuật ngữ đặc biệt khác của Python. Bên trong bất kỳ phương thức thể hiện nào, bạn có thể sử dụng self để truy cập bất kỳ dữ liệu hoặc phương thức nào có thể nằm trong lớp của bạn. Bạn sẽ không thể truy cập chúng nếu không thông qua bản thân
Cuối cùng, vì các phương thức cá thể là phổ biến nhất nên không cần trình trang trí. Bất kỳ phương thức nào bạn tạo sẽ tự động được tạo dưới dạng phương thức cá thể, trừ khi bạn nói với Python cách khác
Đây là một ví dụ
class DecoratorExample:
""" Example Class """
def __init__[self]:
""" Example Setup """
print['Hello, World!']
self.name = 'Decorator_Example'
def example_function[self]:
""" This method is an instance method! """
print['I\'m an instance method!']
print['My name is ' + self.name]
de = DecoratorExample[]
de.example_function[]
Biến name được truy cập thông qua self. Lưu ý rằng khi hàm_ví_dụ được gọi, bạn không cần phải tự chuyển vào---Python sẽ làm điều này cho bạn
Phương thức tĩnh trong Python
Các phương thức tĩnh là các phương thức có liên quan đến một lớp theo một cách nào đó, nhưng không cần truy cập bất kỳ dữ liệu cụ thể nào của lớp. Bạn không cần phải sử dụng self và thậm chí bạn không cần khởi tạo một thể hiện, bạn chỉ cần gọi phương thức của mình
class DecoratorExample:
""" Example Class """
def __init__[self]:
""" Example Setup """
print['Hello, World!']
@staticmethod
def example_function[]:
""" This method is a static method! """
print['I\'m a static method!']
de = DecoratorExample.example_function[]
Trình trang trí @staticmethod được sử dụng để nói với Python rằng phương thức này là một phương thức tĩnh
Các phương thức tĩnh rất tốt cho các chức năng tiện ích, thực hiện một tác vụ trong sự cô lập. Họ không cần [và không thể] truy cập dữ liệu lớp học. Chúng phải hoàn toàn độc lập và chỉ hoạt động với dữ liệu được truyền dưới dạng đối số. Bạn có thể sử dụng một phương thức tĩnh để cộng hai số với nhau hoặc in một chuỗi đã cho
Phương thức lớp trong Python
Các phương thức lớp là loại phương thức OOP thứ ba và cuối cùng cần biết. Các phương thức lớp biết về lớp của chúng. Họ không thể truy cập dữ liệu cá thể cụ thể, nhưng họ có thể gọi các phương thức tĩnh khác
Các phương thức lớp không cần self làm đối số, nhưng chúng cần một tham số gọi là cls. Đây là viết tắt của lớp và giống như bản thân, được Python tự động chuyển vào
Các phương thức lớp được tạo bằng trình trang trí @classmethod
class DecoratorExample:
""" Example Class """
def __init__[self]:
""" Example Setup """
print['Hello, World!']
@classmethod
def example_function[cls]:
""" This method is a class method! """
print['I\'m a class method!']
cls.some_other_function[]
@staticmethod
def some_other_function[]:
print['Hello!']
de = DecoratorExample[]
de.example_function[]
Các phương thức lớp có thể là loại phương thức khó hiểu hơn trong ba loại, nhưng chúng có công dụng của chúng. Các phương thức của lớp có thể tự thao tác với lớp, điều này rất hữu ích khi bạn đang làm việc trên các dự án lớn hơn, phức tạp hơn
Khi nào nên sử dụng từng loại phương pháp
Có vẻ như đây là một quyết định khó khăn và khó khăn khi lựa chọn giữa các loại phương thức trong Python, nhưng bạn sẽ sớm hiểu rõ về nó nếu thực hành một chút
Ngay cả khi bạn chỉ viết các tập lệnh nhỏ cho vui, thì việc học một tính năng OOP khác của Python là một kỹ năng tuyệt vời cần biết và có thể giúp mã của bạn dễ khắc phục sự cố hơn và dễ sử dụng lại hơn trong tương lai
Tóm tắt
- Phương thức sơ thẩm. Loại phương pháp phổ biến nhất. Có thể truy cập dữ liệu và thuộc tính duy nhất cho từng phiên bản
- Phương thức tĩnh. Không thể truy cập bất cứ thứ gì khác trong lớp. Mã hoàn toàn khép kín
- phương pháp lớp. Có thể truy cập các phương thức hạn chế trong lớp. Có thể sửa đổi các chi tiết cụ thể của lớp
Nếu hướng dẫn này hơi nâng cao hoặc không hoàn toàn như những gì bạn đang tìm kiếm, thì tại sao bạn không xem qua các khóa học này để chuyển từ Python mới bắt đầu sang chuyên nghiệp? . Nếu bạn muốn sử dụng Python trong thế giới thực, nhưng lại cảm thấy nhàm chán với Raspberry Pi, thì hướng dẫn của chúng tôi về cách điều khiển Arduino bằng Python thì sao?