Hướng dẫn what is __ variable in python? - biến __ trong python là gì?
Một bản nhấn mạnh ở đầu: Show
Python không có phương pháp riêng tư thực sự. Thay vào đó, một người nhấn mạnh khi bắt đầu một phương thức hoặc tên thuộc tính có nghĩa là bạn không nên truy cập phương thức này, vì nó không phải là một phần của API.
. Trong mã này, Hai dấu gạch dưới lúc đầu: Điều này gây ra rất nhiều sự nhầm lẫn. Nó không nên được sử dụng để tạo ra một phương thức riêng tư. Nó nên được sử dụng để tránh phương pháp của bạn bị ghi đè bởi một lớp con hoặc vô tình truy cập. Hãy xem một ví dụ:
Đầu ra:
Bây giờ tạo một lớp B và tùy chỉnh cho phương thức __test
Đầu ra sẽ là ....
Như chúng ta đã thấy, a.test () đã không gọi các phương thức b .__ test (), như chúng ta có thể mong đợi. Nhưng trên thực tế, đây là hành vi chính xác cho __. Hai phương thức được gọi là __test () được tự động đổi tên (bị xáo trộn) thành _a__test () và _b__test (), do đó chúng không vô tình ghi đè. Khi bạn tạo một phương thức bắt đầu bằng __, điều đó có nghĩa là bạn không muốn bất cứ ai có thể ghi đè nó và bạn chỉ có ý định truy cập nó từ bên trong lớp của chính nó. Hai dấu gạch dưới ở đầu và cuối: Khi chúng ta thấy một phương pháp như 0, đừng gọi nó. Đây là một phương pháp mà Python có nghĩa là để gọi, không phải bạn. Hãy xem:
Luôn có một toán tử hoặc hàm gốc gọi các phương pháp ma thuật này. Đôi khi nó chỉ là một cuộc gọi python hook trong các tình huống cụ thể. Ví dụ: 1 được gọi khi đối tượng được tạo sau khi 2 được gọi để xây dựng thể hiện ...Hãy lấy một ví dụ ...
Để biết thêm chi tiết, xem Hướng dẫn PEP-8. Để biết thêm các phương pháp ma thuật, hãy xem bản PDF này. 1. Sử dụng trong thông dịch viên. Python tự động lưu trữ giá trị của biểu thức cuối cùng trong trình thông dịch cho một biến cụ thể gọi là "_." Bạn cũng có thể gán các giá trị này cho một biến khác nếu bạn muốn. Bạn có thể sử dụng nó như một biến bình thường. __ Main __ Python là gì?“_” is used in Python:
$ python test.py I'm test method in class A I'm test method in class A 0class B(A): def __test(self): print "I'm test method in class B" b = B() b.test() 1 class A(object): def __test(self): print "I'm a test method in class A" def test(self): self.__test() a = A() a.test() # a.__test() # This fails with an AttributeError a._A__test() # Works! We can access the mangled name directly! 18class B(A): def __test(self): print "I'm test method in class B" b = B() b.test() 3class A(object): def __test(self): print "I'm a test method in class A" def test(self): self.__test() a = A() a.test() # a.__test() # This fails with an AttributeError a._A__test() # Works! We can access the mangled name directly! 9$ python test.py I'm test method in class A I'm test method in class A 0$ python test.py I'm test method in class A I'm test method in class A 1class A(object): def __test(self): print "I'm a test method in class A" def test(self): self.__test() a = A() a.test() # a.__test() # This fails with an AttributeError a._A__test() # Works! We can access the mangled name directly! 7class B(A): def __test(self): print "I'm test method in class B" b = B() b.test() 3class A(object): def __test(self): print "I'm a test method in class A" def test(self): self.__test() a = A() a.test() # a.__test() # This fails with an AttributeError a._A__test() # Works! We can access the mangled name directly! 25Double nhấn mạnh trước và sau một cái tên Tên bắt đầu bằng __ và kết thúc với cùng một phương pháp đặc biệt trong Python. Python cung cấp các phương pháp này để sử dụng làm quá tải toán tử tùy thuộc vào người dùng. Python cung cấp quy ước này để phân biệt giữa chức năng do người dùng xác định với chức năng mô-đun & NBSP; 0 1 30 3 32Python3 5 1 35 36 37__ có nghĩa là gì trong Python? 1. Sử dụng trong thông dịch viên. Python tự động lưu trữ giá trị của biểu thức cuối cùng trong trình thông dịch cho một biến cụ thể gọi là "_." Bạn cũng có thể gán các giá trị này cho một biến khác nếu bạn muốn. Bạn có thể sử dụng nó như một biến bình thường. __ Main __ Python là gì?__main__ là tên của môi trường nơi chạy mã cấp cao nhất. Mã cấp cao nhất là mô-đun Python do người dùng chỉ định đầu tiên bắt đầu chạy. Đó là cấp độ hàng đầu vì nó nhập tất cả các mô-đun khác mà chương trình cần. Python3Việc sử dụng __ tên __ là gì? 0 1 2 3 4 5 1 7 8 9__name__ Đối với mô -đun Namemain đã nhập có giá trị "Namemain", đó là tên của mô -đun dưới dạng chuỗi. Lưu ý: Hầu hết thời gian, môi trường mã cấp cao nhất sẽ là tập lệnh Python mà bạn thực thi và nơi bạn đang nhập các mô-đun khác. 0 1 0 0 1 7 5 9 6Output: 1 Ví dụ 4: Dấu gạch gạch đơn trước một tênDẫn đầu trước khi biến /chức năng /tên phương thức cho người lập trình chỉ ra rằng nó chỉ dành cho sử dụng nội bộ, có thể được sửa đổi bất cứ khi nào lớp muốn. Ở đây đặt tên tiền tố bởi một dấu gạch dưới được coi là không công khai. Nếu chỉ định từ nhập * Tất cả các tên bắt đầu bằng _ sẽ không nhập. Python không chỉ định thực sự riêng tư nên cái này có thể được gọi trực tiếp từ các mô -đun khác nếu nó được chỉ định trong __all__, chúng tôi cũng gọi nó là Private Private & NBSP yếu;from Import * all the names starting with _ will not import. Python does not specify truly private so this one can be called directly from other modules if it is specified in __all__, We also call it weak Private Python3 8 8 0 1 2 3 4 5 3 6 6 8 5 311 6 13 14 6 16 118 110 120 10 12 Ví dụ 5: Dấu gạch dưới bằng chữ sốCú pháp Python được sử dụng sao cho dấu gạch dưới có thể được sử dụng làm bộ phân cách trực quan cho các lý do nhóm chữ số để tăng khả năng đọc. Đây là một tính năng điển hình của hầu hết các ngôn ngữ hiện tại và có thể hỗ trợ khả năng đọc của các chữ dài, hoặc nghĩa đen có giá trị nên được phân tách rõ ràng thành các phần. Python310 121 6 10 123 10 124 10 125 10 126 6 10 128 10 129 6 errors 1Double Undercore trước một tênDouble Double Undercore nói với trình thông dịch Python viết lại tên để tránh xung đột trong một lớp con. Thông dịch viên thay đổi tên biến với phần mở rộng lớp và tính năng đó được gọi là Mangling. & NBSP; Python3 8 errors 3 0 1 2 3 4 5 3 6 6 8
testFile.py 14 6 16 Python3 8 errors 3 0 1 2 3 4 5 3 6 6 8 5 311 6 13 14 6 16
1
|