Danh sách đơn Python
Singleton là một mẫu thiết kế quan trọng để lập trình hàng ngày và thường được sử dụng trong các dự án khác nhau Show
Mặc dù Singleton là một mẫu khá phổ biến trong Java, tuy nhiên, trong Python, nó không đơn giản như vậy và một Lớp Singleton có thể được triển khai theo nhiều cách khác nhau. Chúng ta sẽ khám phá những cách khác nhau để triển khai Singleton trong Python. Và đối với những người không thoải mái lắm với khái niệm Singleton Class, tôi đã cố gắng đưa ra một cái nhìn tổng quan ngắn gọn về nó bên dưới Lớp Singleton là gì?Lớp Singleton có nghĩa là một lớp sẽ chỉ có một thể hiện đối tượng. Nói một cách đơn giản, chỉ có thể khởi tạo một thể hiện đối tượng hoặc một đối tượng của lớp đó. Nó ẩn hàm tạo của lớp, để chỉ có thể tạo một thể hiện của lớp đó Nguồn tạo hình ảnh. Mô tả đúng một thể hiện của một lớpTại sao lại là người độc thân?Nó cung cấp quyền truy cập toàn cầu vào thể hiện của nó và nó có thể kiểm soát việc sử dụng các đối tượng thể hiện Lớp. Mẫu thiết kế Singleton trợ giúp trong nhiều trường hợp sử dụng trong thế giới thực Ví dụ
Lớp Singleton được triển khai trong Java như thế nào?Triển khai lớp Singleton trong JavaBa từ khóa quan trọng giúp triển khai dễ dàng mẫu thiết kế Lớp Singleton trong Java 1. Private object instance declaration (On line Number -> 3): thứ hai là 2. Private constructor (On line Number -> 4): thứ ba là 3. Making a static public function so that other external modules/java files can access this method to get the object/instance of the SingletonClass to perform operations or get some data value. Do đó, 2 từ khóa quan trọng đã được sử dụng để triển khai Singleton trong Java
Tuy nhiên, trong Python, chúng tôi không có từ khóa riêng tư. Sau đó, làm thế nào chúng ta có thể triển khai Mẫu thiết kế lớp Singleton trong Python? Thời gian triển khai trong PythonMẫu thiết kế lớp Singleton được triển khai trong PythonCó rất nhiều cách để triển khai nhưng trong bài viết này tôi sẽ nói về hai cách tiếp cận chính thường được sử dụng để triển khai Mẫu thiết kế lớp Singleton trong Python Hãy bắt đầu nào 1. Cách tiếp cận đầu tiên. Thực hiện đơn giản lớp SingletonCách tiếp cận đầu tiên khá đơn giản, chúng tôi sẽ kiểm tra xem đối tượng/thể hiện của lớp đó đã được tạo hay chưa. Nếu đúng như vậy, thì chúng tôi sẽ không cho phép tạo một thể hiện khác của lớp đó. Hãy xem đây là hành động Triển khai lớp SingletonBạn có đoán được đầu ra của đoạn mã trên không? accessing instance method Như bạn có thể thấy trong đoạn mã trên, ở dòng số (20), nó đã cố gắng tạo một thể hiện mới của lớp Singleton, tuy nhiên, trong hàm tạo (dòng số 4), nó sẽ kiểm tra xem đã có một thể hiện hay chưa, nếu có Trong python, dấu gạch dưới kép (__some_variable) trước khi biến hoạt động như một biến riêng, không thể truy cập biến này bên ngoài lớp, (mặc dù nó có thể được truy cập theo các cách khác, nhưng hiện tại tôi sẽ không đi sâu vào sự phức tạp của dấu gạch dưới kép). Do đó, không có mô-đun/Lớp nào khác có thể truy cập trực tiếp hoặc có thể sửa đổi nó. Ngoài ra, hàm tạo của chúng tôi trên dòng số (3) hoạt động như một hàm tạo riêng ảo Điều này có nghĩa là mặc dù không có từ khóa riêng tư như chúng ta có trong Java, nhưng với logic điều kiện, chúng ta có thể kiểm tra xem thể hiện đã được tạo hay chưa, do đó, nó hoạt động như một hàm tạo riêng tư. Do đó, đoạn mã trên là cách triển khai đơn giản của lớp Singleton, tuy nhiên không phải là cách tốt nhất 2. Một cách tiếp cận khác để triển khai Lớp SingletonVới sự trợ giúp của phương thức __new__ dunder, chúng ta có thể triển khai lớp Singleton. Tôi đã giải thích khái niệm về phương pháp __new__ dunder, dành cho những người chưa quen với nó, vola. tốt, tôi đã đề cập đến điều đó bên dưới Q. Phương thức __new__ Dunder này trong Python là gì? trả lời. Phương thức __new__ dunder là một phương thức Lớp được gọi trước phương thức __init__ (hàm tạo) 1# Phương thức __new__ được gọi để tạo đối tượng. Phương thức này luôn được gọi trước phương thức __init__. Nó lấy lớp làm đối số, vì nó phải tạo thể hiện của lớp đó. Theo mặc định, nó là một phương thức tĩnh. Không cần thêm trình trang trí phương thức tĩnh vào nó Phương thức 2#__init__ được gọi để khởi tạo đối tượng Bây giờ, chúng ta sẽ sử dụng tiện ích của phương thức __new__ Dunder để đạt được Mẫu thiết kế Singleton Hãy xem hoạt động của phương thức __new__ và cách nó sẽ giúp chúng ta tạo một Lớp Singleton Bạn có đoán được đầu ra của câu lệnh in của đoạn mã trên không get instance method called new method calledinit method is calledaccessing instance method Trên Dòng (25), một phương thức tĩnh được gọi để lấy một thể hiện của lớp, sau đó nếu __private_instance chứa giá trị thể hiện, nó sẽ không tạo thể hiện mới, ngược lại, nó sẽ tạo thể hiện mới bằng cách gọi lớp Singleton (Trực tuyến (19) . Do đó, trước tiên, nó chuyển sang phương thức __new__ và tạo một thể hiện mới trên dòng số (7), sau đó, nó chuyển sang phương thức __init__ để khởi tạo bất kỳ giá trị nào cho đối tượng thể hiện. Sau đó, Trên dòng số (26), một đối tượng gọi phương thức thể hiện và in ra “truy cập phương thức thể hiện” Bây giờ, hãy thử tạo một thể hiện đối tượng khác trong ví dụ trên, điều gì sẽ xảy ra? Triển khai mẫu thiết kế SingletonNhư bạn có thể thấy, bây giờ tôi đã thêm Singleton() (trên Line (27)) để tạo đối tượng của Singleton Class. Điều gì sẽ là sự thay đổi trong đầu ra bây giờ? tôi sẽ nói. chờ đã, đừng cuộn xuống, trước tiên hãy thử đoán đầu ra Đầu ra cho ví dụ mã trên là get instance method callednew method calledinit method is calledaccessing instance methodnew method called Như bạn có thể thấy không phải do lệnh gọi Singleton() trên dòng(27), đầu tiên nó chuyển sang phương thức __new__, tuy nhiên vì đã có một thể hiện được tạo cho lớp Singleton, do đó, nó không tạo một thể hiện khác và trả về Không có, Cuối cùng. Chúng tôi đã hoàn thành và học cách triển khai Singleton (Nguồn Gif. https. // giphy. com/gifs/2wYrkKvETbAwWAM4Gy/embed)Phần kết luậnMẫu Singleton là một mẫu thiết kế quan trọng và mặc dù tôi đã chỉ ra 2 cách tiếp cận chính để triển khai giống nhau, tuy nhiên nó có thể được triển khai theo những cách khác nhau Danh sách đơn Python là gì?Singleton là mẫu thiết kế sáng tạo, đảm bảo rằng chỉ có một đối tượng thuộc loại này tồn tại và cung cấp một điểm truy cập duy nhất tới đối tượng đó cho bất kỳ mã nào khác. Singleton has almost the same pros and cons as global variables. Although they're super-handy, they break the modularity of your code.
Là gì [. ] trong Python?Các [. ] tạo một bản sao nông của mảng , do đó cho phép bạn sửa đổi bản sao của mình mà không làm hỏng bản gốc. Lý do điều này cũng hoạt động đối với các chuỗi là trong Python, Chuỗi là các mảng byte đại diện cho các ký tự Unicode.
Có một singleton trong Python?Mẫu Singleton trong python là một mẫu thiết kế cho phép bạn chỉ tạo một phiên bản của một lớp trong suốt vòng đời của chương trình . Sử dụng một mẫu đơn có nhiều lợi ích. một vài trong số họ là. Để giới hạn quyền truy cập đồng thời vào một tài nguyên được chia sẻ.
Danh sách Python có thứ tự hay không có thứ tự?Các đặc điểm quan trọng của danh sách Python như sau. Danh sách được sắp xếp . Danh sách có thể chứa bất kỳ đối tượng tùy ý nào. Các phần tử danh sách có thể được truy cập theo chỉ mục. |