__ thêm __ trong Python là gì?
Các phương thức ma thuật trong Python là các phương thức đặc biệt bắt đầu và kết thúc bằng dấu gạch dưới kép. Chúng còn được gọi là phương pháp dunder. Các phương thức ma thuật không có nghĩa là bạn phải gọi trực tiếp, nhưng việc gọi xảy ra bên trong lớp trên một hành động nhất định. Ví dụ: khi bạn cộng hai số bằng toán tử +, bên trong, phương thức 2 sẽ được gọi Show Các lớp tích hợp trong Python định nghĩa nhiều phương thức ma thuật. Sử dụng hàm 3 để xem số lượng phương thức ma thuật được kế thừa bởi một lớp. Ví dụ: phần sau đây liệt kê tất cả các thuộc tính và phương thức được định nghĩa trong lớp 4>>> dir(int)['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', ' Như bạn có thể thấy ở trên, lớp int bao gồm nhiều phương thức ma thuật khác nhau được bao quanh bởi hai dấu gạch dưới. Ví dụ: phương thức 5 là một phương thức kỳ diệu được gọi khi chúng ta cộng hai số bằng toán tử +. Xem xét ví dụ sau>>> num=10>>> num + 5 15 >>> num. __add__(5) 15 Như bạn có thể thấy, khi bạn thực hiện 6, toán tử + sẽ gọi phương thức 7. Bạn cũng có thể gọi trực tiếp 0 sẽ cho kết quả tương tự. Tuy nhiên, như đã đề cập trước đây, các phương thức ma thuật không được gọi trực tiếp mà được gọi bên trong, thông qua một số phương thức hoặc hành động khácCác phương thức ma thuật được sử dụng thường xuyên nhất để xác định các hành vi quá tải của các toán tử được xác định trước trong Python. Chẳng hạn, các toán tử số học theo mặc định hoạt động trên các toán hạng số. Điều này có nghĩa là các đối tượng số phải được sử dụng cùng với các toán tử như +, -, *, /, v.v. Toán tử + cũng được định nghĩa là toán tử nối trong các lớp chuỗi, danh sách và bộ. Chúng ta có thể nói rằng toán tử + bị quá tải Để làm cho hành vi quá tải có sẵn trong lớp tùy chỉnh của riêng bạn, phương thức ma thuật tương ứng phải được ghi đè. Ví dụ: để sử dụng toán tử + với các đối tượng của lớp do người dùng định nghĩa, cần bao gồm phương thức 2Hãy xem cách thực hiện và sử dụng một số phương pháp ma thuật quan trọng phương thức __new__()Các ngôn ngữ như Java và C# sử dụng toán tử new để tạo một thể hiện mới của một lớp. Trong Python, phương thức ma thuật 2 được gọi ngầm trước phương thức 3. Phương thức 2 trả về một đối tượng mới, sau đó được khởi tạo bởi 3Ví dụ. __Mới__() Sao chép
Ví dụ trên sẽ tạo ra kết quả sau khi bạn tạo một thể hiện của lớp 6>>> emp = Employee()__new__ phương thức ma thuật được gọi __init__ phương thức ma thuật được gọi Do đó, phương thức 2 được gọi trước phương thức 3phương thức __str__()Một phương pháp ma thuật hữu ích khác là 9. Nó bị ghi đè để trả về một biểu diễn chuỗi có thể in được của bất kỳ lớp nào do người dùng xác định. Chúng ta đã thấy hàm tích hợp sẵn 00 trả về một chuỗi từ tham số đối tượng. Ví dụ: 01 trả về '12'. Khi được gọi, nó gọi phương thức 9 trong lớp int>>> num=12>>> str(num) '12' >> . __str__(num) >>> int.__str__(num) '12' Bây giờ chúng ta hãy ghi đè phương thức 9 trong lớp Nhân viên để trả về một chuỗi đại diện cho đối tượng của nóVí dụ. __str__() Sao chép
Xem cách hàm 00 gọi nội bộ phương thức 9 được định nghĩa trong lớp Nhân viên. Đây là lý do tại sao nó được gọi là một phương pháp kỳ diệu>>> print(e1) name=Lương Swati=$10000 phương thức __add__()Trong ví dụ sau, một lớp có tên là khoảng cách được định nghĩa với hai thuộc tính thể hiện - ft và inch. Việc cộng hai đối tượng khoảng cách này được mong muốn được thực hiện bằng cách sử dụng toán tử + nạp chồng Để đạt được điều này, phương thức ma thuật 2 được ghi đè, thực hiện phép cộng các thuộc tính ft và inch của hai đối tượng. Phương thức 9 trả về biểu diễn chuỗi của đối tượngVí dụ. Ghi đè __add__() Sao chép 0Chạy tập lệnh Python ở trên để xác minh hoạt động quá tải của toán tử + >>> d1=khoảng cách(3,10)>>> d2=khoảng cách(4,4) >>> print( . định dạng(d1, d2)) d1= ft. 3 trong. 10 d2=ft. 4 trong. 4 >>> d3=d1+d2 >>> print(d3) ft. 8 trong. 2 phương thức __ge__()Phương thức sau đây được thêm vào lớp khoảng cách để quá tải toán tử 08Ví dụ. __ge__() Sao chép 0Phương thức này được gọi khi toán tử 08 được sử dụng và trả về Đúng hoặc Sai. Theo đó, thông báo thích hợp có thể được hiển thị>>> d1=khoảng cách(2,1)>>> d2=khoảng cách(4,10) >>> d1> False Phương pháp ma thuật quan trọngCác bảng sau liệt kê các phương thức ma thuật quan trọng trong Python 3 Khởi tạo và xây dựngMô tả__new__(cls, other)Để được gọi khi khởi tạo đối tượng. __init__(self, other)Để được gọi bằng phương thức __new__. __del__(self)Phương thức hủy Các toán tử và hàm đơn nguyên Mô tả __pow__(self)Để được gọi cho e dương đơn nguyên. g. +đối tượng nào đó. __neg__(self)Để được gọi cho e âm đơn nguyên. g. -đối tượng nào đó. __abs__(self)Để được gọi bởi hàm abs() tích hợp. __invert__(self)Để được gọi đảo ngược sử dụng toán tử ~. __round__(self,n)Để được gọi bởi hàm round() tích hợp. __floor__(self)Để được gọi bằng toán học tích hợp. hàm sàn (). __ceil__(self)Để được gọi bằng toán học tích hợp. chức năng trần(). __trunc__(self)Để được gọi bằng toán học tích hợp. hàm trunc() Augmented AssignmentDescription__iadd__(self, other)To get called on addition with assignment e.g. a +=b.__isub__(self, other)To get called on subtraction with assignment e.g. a -=b.__imul__(self, other)To get called on multiplication with assignment e.g. a *=b.__ifloordiv__(self, other)To get called on integer division with assignment e.g. a //=b.__idiv__(self, other)To get called on division with assignment e.g. a /=b.__itruediv__(self, other)To get called on true division with assignment__imod__(self, other)To get called on modulo with assignment e.g. a%=b.__ipow__(self, other)To get called on exponentswith assignment e.g. a **=b.__ilshift__(self, other)To get called on left bitwise shift with assignment e.g. a<<=b.__irshift__(self, other)To get called on right bitwise shift with assignment e.g. a >>=b.__iand__(self, other)To get called on bitwise AND with assignment e.g. a&=b.__ior__(self, other)To get called on bitwise OR with assignment e.g. a|=b.__ixor__(self, other)To get called on bitwise XOR with assignment e.g. a ^=b. Các phương thức ma thuật chuyển đổi loạiMô tả__int__(self)Để được gọi bằng phương thức int() tích hợp để chuyển đổi một loại thành int. __float__(self)Để được gọi bằng phương thức float() tích hợp để chuyển đổi một loại thành float. __complex__(self)Để được gọi bằng phương thức int complex() để chuyển đổi một loại thành phức tạp. __oct__(self)Để được gọi bằng phương thức int oct() tích hợp để chuyển đổi một loại thành bát phân. __hex__(self)Để được gọi bằng phương thức hex() tích hợp để chuyển đổi một loại thành thập lục phân. __index__(self)Để được gọi khi chuyển đổi kiểu thành int khi đối tượng được sử dụng trong biểu thức lát cắt. __trunc__(self)Để được gọi từ toán học. phương thức trunc() Các phương thức ma thuật chuỗiDescription__str__(self)Để được gọi bằng phương thức str() tích hợp để trả về một biểu diễn chuỗi của một loại. __repr__(self)Để được gọi bằng phương thức repr() tích hợp để trả về một đại diện có thể đọc được bằng máy của một loại. __unicode__(self)Để được gọi bằng phương thức unicode() tích hợp để trả về một chuỗi unicode thuộc loại. __format__(self, formattr)Để được gọi bằng chuỗi int tích hợp. format() để trả về một kiểu chuỗi mới. __hash__(self)Để được gọi bằng phương thức hash() tích hợp để trả về một số nguyên. __nonzero__(self)Để được gọi bằng phương thức bool() tích hợp để trả về Đúng hoặc Sai. __dir__(self)Để được gọi bằng phương thức int dir() để trả về danh sách các thuộc tính của một lớp. __sizeof__(self)Để được gọi bởi sys tích hợp. phương thức getsizeof() để trả về kích thước của một đối tượng Thuộc tính Magic MethodsDescription__getattr__(self, name) Được gọi khi thuộc tính truy cập của một lớp không tồn tại. __setattr__(self, name, value) Được gọi khi gán giá trị cho thuộc tính của một lớp. __delattr__(self, name)Được gọi khi xóa một thuộc tính của một lớp Toán tử Magic Methods Mô tả __add__(self, other)Để được gọi trong phép toán cộng sử dụng + toán tử __sub__(self, other)Để được gọi trong phép toán trừ sử dụng - toán tử. __mul__(self, other)Để được gọi trong phép toán nhân sử dụng toán tử *. __floordiv__(self, other)Để được gọi trong thao tác chia tầng sử dụng toán tử //. __truediv__(self, other)Để được gọi trong phép toán chia sử dụng toán tử /. __mod__(self, other)Để được gọi trên thao tác modulo sử dụng toán tử %. __pow__(self, other[, modulo])Để được gọi khi tính toán công suất sử dụng toán tử **. __lt__(self, other)Để được gọi khi so sánh sử dụng toán tử <. __le__(self, other)Để được gọi khi so sánh sử dụng toán tử = __ mới __ trong Python là gì?new về cơ bản là một phương thức Python tiêu chuẩn được gọi trước init khi một phiên bản lớp được tạo . Để biết thêm thông tin, hãy xem hướng dẫn mới về python. https. // tài liệu. con trăn. org/3/tham khảo/datamodel. html#đối tượng. __mới__
__ chứa __ trong Python là gì?Chuỗi Python __contains__() là một phương thức thể hiện và trả về giá trị boolean Đúng hoặc Sai tùy thuộc vào việc đối tượng chuỗi có chứa đối tượng chuỗi đã chỉ định hay không. Note that the Python string contains() method is case sensitive.
__ lớp __ trong Python là gì?__class__ là một thuộc tính trên đối tượng đề cập đến lớp mà đối tượng được tạo ra từ đó . một. __lớp__ # Đầu ra.
Sự khác biệt giữa _ và __ trong Python là gì?Dấu gạch dưới đầu và cuối kép ( __var__ ). Chỉ ra các phương thức đặc biệt được xác định bởi ngôn ngữ Python. Tránh sơ đồ đặt tên này cho các thuộc tính của riêng bạn. Dấu gạch dưới đơn ( _ ). Đôi khi được dùng làm tên cho các biến tạm thời hoặc không quan trọng (“không quan tâm”). |