Ví dụ về giao diện Python

Sử dụng giao diện, bạn có thể chỉ định những gì một lớp nên làm, nhưng lớp đó làm như thế nào thì không được chỉ định. Vì vậy, về cơ bản, giao diện cung cấp mô tả về cách một đối tượng sẽ hành xử mà không thực sự cung cấp việc triển khai hành vi đó

Giao diện trong Python

Một giao diện chỉ nên cung cấp tên phương thức mà không có thân phương thức. Các lớp con nên cung cấp triển khai cho tất cả các phương thức được xác định trong một giao diện

Không giống như Java nơi từ khóa 'giao diện' được cung cấp để tạo giao diện một cách rõ ràng trong Python, không có hỗ trợ nào như vậy để tạo giao diện. Nếu bạn đang thắc mắc tại sao Python không hỗ trợ như vậy thì bạn phải biết về "triết lý gõ vịt" của Python

Gõ trăn và vịt

Python mặc dù được gõ mạnh cũng được gõ động, do đó, loại của bất kỳ đối tượng/trường nào được gán ngầm tùy thuộc vào vị trí và cách sử dụng trường đó

Trong Python tập trung nhiều hơn vào hành vi của đối tượng hơn là các loại của nó. Nếu bạn muốn gọi một phương thức trên đối tượng thì không cần kiểm tra loại đối tượng và không cần kiểm tra xem phương thức đó có thực sự thuộc về đối tượng đó không

Nếu có một đối tượng có thể bay và kêu như vịt thì đó phải là một con vịt, đây là nguyên tắc gõ vịt trong Python. Hãy cố gắng làm rõ nó bằng một ví dụ-

class Duck:
  def sound(self):
    print('Quack Quack')

class Cat:
  def sound(self):
    print('Meow Meow')

class Human:
  def sound(self):
    print('Hey hello')

class Test:
  def invoke(self, obj):
    obj.sound();

t = Test()
obj = Duck()
t.invoke(obj)

obj = Cat()
t.invoke(obj)

obj = Human()
t.invoke(obj)

đầu ra

Quack Quack
Meow Meow
Hey hello

Khi đối tượng kiểu Cat được truyền cho phương thức invoke() và phương thức sound() được gọi bằng đối tượng đó, phương thức sound() của lớp Cat được thực thi. Khi đối tượng kiểu Duck được truyền cho phương thức invoke() và phương thức sound() được gọi bằng đối tượng đó, phương thức sound() của lớp Duck được thực thi và tương tự đối với đối tượng kiểu Human

Những người đến từ Java, một ngôn ngữ được gõ mạnh trong đó mọi biến phải được khai báo bằng một kiểu dữ liệu, sẽ đánh giá cao sự khác biệt này giữa các ngôn ngữ này. Trong Java nếu bạn cần đa hình thời gian chạy, cách tốt nhất là tạo một giao diện và yêu cầu các lớp thực hiện nó. Sau đó, sử dụng tham chiếu giao diện để giữ tham chiếu đối tượng thực tế trong thời gian chạy để có được tính đa hình trong thời gian chạy. Trong Python là một ngôn ngữ được nhập động (như được hiển thị trong ví dụ trên), bạn có thể nói rằng bạn có tính đa hình thời gian chạy sẵn có trong ngôn ngữ. Đó có thể là một trong những lý do không có từ khóa giao diện rõ ràng trong Python để tạo giao diện

Cách tạo giao diện trong Python

Bạn có thể có yêu cầu tạo API mà các nhà phát triển phải tuân theo để triển khai, điều này được phục vụ tốt nhất bằng cách tạo giao diện, vì vậy bây giờ câu hỏi đặt ra là làm thế nào để tạo giao diện trong Python?

Trong Python, bạn có thể tạo giao diện bằng lớp trừu tượng. Nếu bạn tạo một lớp trừu tượng chỉ chứa các phương thức trừu tượng hoạt động như một giao diện trong Python

Lưu ý rằng không thể tạo đối tượng của giao diện. Các lớp con phải triển khai tất cả các phương thức trừu tượng của một giao diện và các đối tượng của các lớp con đó có thể được tạo. Việc sử dụng giao diện mang lại sự linh hoạt mà mỗi lớp con có thể cung cấp cách triển khai các phương thức giao diện của riêng nó

Giao diện trong ví dụ Python

Lớp trừu tượng Thanh toán được tạo chỉ chứa thanh toán phương thức trừu tượng (không có phương thức cụ thể) để đủ điều kiện làm giao diện

Hai lớp CreditCardPayment và MobileWalletPayment triển khai phương thức giao diện theo yêu cầu của chúng. Dựa trên đối tượng, phương thức thanh toán chính xác được gọi, sử dụng phương thức isinstance(), nó cũng được kiểm tra xem cả hai đối tượng có thuộc loại Thanh toán hay không

from abc import ABC, abstractmethod
class Payment(ABC):
  @abstractmethod
  def payment(self, amount):
    pass

class CreditCardPayment(Payment):
  def payment(self, amount):
    print('Credit card payment of- ', amount)

class MobileWalletPayment(Payment):
  def payment(self, amount):
    print('Mobile wallet payment of- ', amount)

obj = CreditCardPayment()
obj.payment(100)
print(isinstance(obj, Payment))
obj = MobileWalletPayment()
obj.payment(200)
print(isinstance(obj, Payment))

đầu ra

Credit card payment of-  100
True
Mobile wallet payment of-  200
True

Lớp trừu tượng Vs Giao diện trong Python

Như chúng ta đã thấy, không có từ khóa 'giao diện' rõ ràng trong Python để tạo giao diện. Để tạo một giao diện trong lớp trừu tượng Python được sử dụng chỉ có các phương thức trừu tượng. Bây giờ câu hỏi đặt ra là khi nào thì dùng lớp trừu tượng khi nào dùng giao diện

Trong thiết kế của bạn nếu bạn có một tập hợp các lớp chia sẻ một số chức năng chung và có một số chức năng khác nhau thì bạn có thể chọn một lớp trừu tượng nơi bạn có thể có các phương thức cụ thể cho chức năng chung được chia sẻ bởi tất cả các lớp con và các phương thức trừu tượng cho

Nếu có một tập hợp các lớp mà bạn muốn liên kết trong hệ thống phân cấp lớp ngay cả khi cách chức năng được triển khai hoàn toàn khác thì bạn có thể sử dụng giao diện. Điều đó mang lại cho các lớp con cơ hội thực hiện tất cả các phương thức trừu tượng theo yêu cầu của chúng

Đó là tất cả cho chủ đề này Giao diện trong Python. Nếu bạn có bất kỳ nghi ngờ hoặc bất kỳ đề xuất nào để thực hiện, vui lòng gửi bình luận. Thanks

Ví dụ về giao diện trong Python là gì?

Tổng quan về giao diện Python . Giống như các lớp, các giao diện định nghĩa các phương thức. Không giống như các lớp, các phương thức này là trừu tượng. Một phương thức trừu tượng là một phương thức mà giao diện chỉ định nghĩa. an interface acts as a blueprint for designing classes. Like classes, interfaces define methods. Unlike classes, these methods are abstract. An abstract method is one that the interface simply defines.

Làm cách nào để tạo giao diện trong Python?

Thật không may, Python không có giao diện, hoặc ít nhất, không được tích hợp hoàn toàn vào ngôn ngữ. Nhập lớp cơ sở trừu tượng của Python, hoặc dễ thương là ABC. Về mặt chức năng, các lớp cơ sở trừu tượng cho phép bạn định nghĩa một lớp với các phương thức trừu tượng mà tất cả các lớp con phải triển khai để được khởi tạo

Python có giao diện không?

Trong các ngôn ngữ hướng đối tượng như Python, giao diện là tập hợp các chữ ký phương thức nên được cung cấp bởi lớp triển khai. Triển khai một giao diện là một cách viết mã có tổ chức và đạt được sự trừu tượng

Ví dụ về giao diện là gì?

Một số ví dụ về giao diện người dùng bao gồm. .
chuột máy tính
điều khiển từ xa
thực tế ảo
công tơ mét
bánh xe nhấp chuột iPod cũ