Toán tử chồng chéo và quá tải trong python
Các toán tử được sử dụng trong Python để thực hiện các thao tác cụ thể trên các toán hạng đã cho. Hoạt động mà bất kỳ toán tử cụ thể nào sẽ thực hiện trên bất kỳ loại dữ liệu được xác định trước nào đã được xác định trong Python Show
Mỗi toán tử có thể được sử dụng theo một cách khác nhau cho các loại toán hạng khác nhau. Ví dụ: toán tử 3 được sử dụng để cộng hai số nguyên để cho kết quả là một số nguyên nhưng khi chúng ta sử dụng nó với toán hạng float thì kết quả là một giá trị float và khi 3 được sử dụng với toán hạng chuỗi thì nó sẽ nối hai toán hạng được cung cấpHành vi khác nhau này của một toán tử đối với các loại toán hạng khác nhau được gọi là Nạp chồng toán tử. Việc sử dụng toán tử 3 với các loại toán hạng khác nhau được hiển thị bên dưới
Nhà điều hành class Complex: def __init__(self, r, i): self.real = r self.img = i c1 = Complex(5,3) c2 = Complex(2,4) print("sum = ", c1+c2) 3 có thể thêm gì không?Câu trả lời là Không, nó không thể. Bạn có thể sử dụng toán tử 3 để thêm hai đối tượng của một lớp không. Toán tử 3 có thể thêm hai giá trị số nguyên, hai giá trị float hoặc chỉ có thể được sử dụng để nối hai chuỗi vì các hành vi này đã được xác định trong pythonVì vậy, nếu bạn muốn sử dụng cùng một toán tử để thêm hai đối tượng của một số lớp do người dùng xác định thì bạn sẽ phải tự xác định hành vi đó và thông báo cho python về điều đó Nếu bạn vẫn chưa rõ, hãy tạo một lớp và thử sử dụng toán tử 3 để thêm hai đối tượng của lớp đó,
Traceback (cuộc gọi gần đây nhất cuối cùng). Tệp "/tmp/sessions/1dfbe78bb701d99d/main. py", dòng 7, inprint("sum = ", c1+c2) TypeError. (các) loại toán hạng không được hỗ trợ cho +. 'Phức hợp' và 'Phức hợp' Vì vậy, chúng ta có thể thấy rằng toán tử 3 không được hỗ trợ trong lớp do người dùng định nghĩa. Nhưng chúng ta có thể làm điều tương tự bằng cách nạp chồng toán tử 3 cho lớp 2 của chúng ta. Nhưng làm thế nào chúng ta có thể làm điều đó?Các hàm đặc biệt trong PythonCác hàm đặc biệt trong python là các hàm dùng để thực hiện các tác vụ đặc biệt. Các hàm đặc biệt này có tiền tố và hậu tố tên là 3 như chúng ta thấy trong phương thức 4, đây cũng là một hàm đặc biệt. Một số chức năng đặc biệt được sử dụng để nạp chồng toán tử được hiển thị bên dướitoán tử toán họcDưới đây chúng tôi có tên của các chức năng đặc biệt để quá tải các toán tử toán học trong python 3 6Phép trừ 7 8Phân chia 9 0Phân chia tầng 1 2Mô đun (hoặc Phần dư) 3 4Công suất 5 6Toán tử chuyển nhượngDưới đây chúng ta có tên của các hàm đặc biệt để quá tải toán tử gán trong python Tên Biểu tượng Chức năng đặc biệtIncrementIncrement 7 8Decrement 9 30Product 31 32Division 33 34Modulus 35 36Power 37 38Toán tử quan hệDưới đây chúng tôi có tên của các chức năng đặc biệt để quá tải các toán tử quan hệ trong python Tên Biểu tượngChức năng đặc biệtNhỏ hơn 39 30Lớn hơn 31 32Bằng 33 34Không bằng 35 36Nhỏ hơn hoặc bằng 37 38Lớn hơn hoặc bằng 39 32Đã đến lúc xem một số ví dụ mã trong đó chúng ta thực sự sử dụng các hàm đặc biệt được chỉ định ở trên và quá tải một số toán tử Quá tải toán tử class Complex: def __init__(self, r, i): self.real = r self.img = i c1 = Complex(5,3) c2 = Complex(2,4) print("sum = ", c1+c2) 3Trong ví dụ mã bên dưới, chúng ta sẽ quá tải toán tử 3 cho lớp 2 của chúng ta,
tổng = 7 + 7i Trong chương trình trên, 34 được sử dụng để nạp chồng toán tử 3 i. e. khi toán tử 3 được sử dụng với hai đối tượng lớp 2 thì hàm 34 được gọi 39 là một chức năng đặc biệt khác được sử dụng để cung cấp định dạng của đối tượng phù hợp để inQuá tải toán tử class Complex: def __init__(self, r, i): self.real = r self.img = i c1 = Complex(5,3) c2 = Complex(2,4) print("sum = ", c1+c2) 39Bây giờ, hãy nạp chồng toán tử nhỏ hơn để chúng ta có thể dễ dàng so sánh các giá trị của hai đối tượng lớp 2 bằng cách sử dụng toán hạng nhỏ hơn 39Như chúng ta đã biết, để làm như vậy, chúng ta phải định nghĩa hàm đặc biệt 33 trong lớp của chúng taDựa trên yêu cầu so sánh đối tượng lớp, bạn có thể xác định logic cho các chức năng đặc biệt để ghi đè toán tử. Trong đoạn mã trên, chúng tôi đã ưu tiên phần thực của số phức, nếu phần đó nhỏ hơn thì toàn bộ số phức nhỏ hơn, nếu phần đó bằng nhau thì chúng tôi kiểm tra phần ảo Toán tử chồng lấp trong Python là gì?Quá tải toán tử trong Python có nghĩa là cung cấp ý nghĩa mở rộng ngoài ý nghĩa hoạt động được xác định trước của chúng. Chẳng hạn, chúng ta sử dụng toán tử "+" để cộng hai số nguyên cũng như nối hai chuỗi hoặc hợp nhất hai danh sách. Chúng ta có thể đạt được điều này khi toán tử "+" được nạp chồng bởi lớp "int" và lớp "str"
Ghi đè và quá tải trong Python là gì?Quá tải phương thức là xác định hai hoặc nhiều phương thức có cùng tên nhưng khác tham số. Python không hỗ trợ nạp chồng phương thức. Ghi đè phương thức là định nghĩa lại một phương thức của lớp cha trong lớp dẫn xuất . Ghi đè yêu cầu kế thừa để thực hiện.
Sự khác biệt giữa quá tải và ghi đè là gì?Ghi đè xảy ra khi chữ ký phương thức giống nhau trong lớp cha và lớp con. Quá tải xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng khác tham số
Ví dụ về nạp chồng toán tử và ghi đè toán tử là gì?Nạp toán tử trong C++
. Ví dụ: chúng ta có thể quá tải một toán tử '+' trong một lớp như Chuỗi để chúng ta có thể nối hai chuỗi chỉ bằng cách sử dụng +. C++ has the ability to provide the operators with a special meaning for a data type, this ability is known as operator overloading. For example, we can overload an operator '+' in a class like String so that we can concatenate two strings by just using +. |