Cộng hai số trong python bằng cách sử dụng lớp và đối tượng
Chương trình lấy chiều dài và chiều rộng từ người dùng và tìm diện tích hình chữ nhật bằng cách sử dụng các lớp Show Giải pháp vấn đề 1. Tạo một lớp và sử dụng hàm khởi tạo để khởi tạo các giá trị của lớp đó. Chương trình/Mã nguồn Đây là mã nguồn của Chương trình Python để lấy chiều dài và chiều rộng từ người dùng và tìm diện tích hình chữ nhật. Đầu ra chương trình cũng được hiển thị bên dưới Trong hướng dẫn này, chúng ta sẽ học cách viết một chương trình cộng hai số cơ bản trong Python. Chương trình của chúng tôi sẽ lấy hai đầu vào từ người dùng và trả về tổng của chúng. Để lấy đầu vào từ người dùng trong Python, chúng tôi sử dụng một hàm có tên là input(). Đây là một chức năng sẵn có, nhận đầu vào từ người dùng và luôn chuyển đổi nó thành chuỗi Để lấy đầu vào số nguyên, chúng ta sử dụng hàm int(), đây cũng là hàm được xác định trước. Mã của chương trình của chúng tôi sẽ lấy hai đầu vào của người dùng như sau và trả về tổng của những số đó làm đầu ra. Ví dụ Đầu vào- 2,5 Đầu ra- 7 Bây giờ, chúng ta hãy tiếp tục để hiểu hoạt động của mã thuật toánBước 1- Xác định hàm Sum_of_two_num() để cộng hai số Bước 2- Truyền hai số làm tham số và cộng chúng Bước 3- Khai báo biến sum để lưu tổng các số Bước 4- Lấy người dùng nhập hai số Bước 5- Gọi hàm Sum_of_two_num() và truyền đầu vào làm tham số Bước 6- Khai báo biến để lưu giá trị trả về của hàm Bước 7- In tổng Chương trình PythonNhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên
Sự kết luậnTrong hướng dẫn này, chúng ta đã học cách cộng hai số bằng ngôn ngữ lập trình Python. Chúng tôi đã xác định một chức năng chấp nhận hai đầu vào của người dùng làm tham số. Trong định nghĩa hàm, chúng ta đã khai báo một biến sum để lưu tổng của hai số. Giá trị của biến sum được hàm trả về. Chúng tôi đã khai báo một biến khác bắt giá trị trả về của hàm và sử dụng biến này để hiển thị đầu ra int có phương thức 7, bạn sẽ gọi nó trên một thể hiện của int, giống như bất kỳ phương thức nào khác được gọi
mặc dù điều đó sẽ không hoạt động. 8 thực sự là một số float, vì vậy bạn đã mắc lỗi cú pháp. dấu ngoặc quanh số nguyên là bắt buộc
cách khác, bạn có thể thêm một 9 khác nhưng sau đó bạn đang gọi 7 trên 1, không phải 2
ghi đè nó đi một cái gì đó như thế này
tất nhiên đây là một ví dụ ngớ ngẩn, một phiên bản của 0 sẽ hoạt động gần giống như một int. (sự khác biệt là int là một kiểu dựng sẵn, nó được viết bằng C)tôi đã phủ định và trừ đi 1 vì 2 sẽ đề cập đến phương thức này, nó sẽ gọi chính nó vô tận và nếu không thì sẽ bị sậpồ vâng và, ghi đè, không quá tải, đó là một thứ khác và không tồn tại trong python - đó là khi có nhiều phiên bản của một hàm hoặc phương thức, tất cả đều có cùng tên nhưng các tham số khác nhau. https. // vi. wikipedia. org/wiki/Function_overloading Phương thức __add__() trong Python chỉ định điều gì sẽ xảy ra khi bạn gọi + trên hai đối tượng. Khi bạn gọi obj1 + obj2, về cơ bản bạn đang gọi obj1. __add__(obj2) Ví dụ: hãy gọi + trên hai đối tượng int ________số 8đầu ra 30 30 Điều này hoạt động, bởi vì int thực hiện phương thức __add__() đằng sau hậu trường Để thực hiện bổ sung hỗ trợ đối tượng tùy chỉnh với toán tử +, bạn cần triển khai phương thức __add__() trong lớp Trong hướng dẫn này, bạn tìm hiểu cách triển khai phương thức __add__(). Bạn cũng tìm hiểu cách thêm các đối tượng thuộc các loại hỗn hợp. Cuối cùng, bạn sẽ xem cách cộng các loại đối tượng hỗn hợp có tính chất giao hoán (a + b = b + a) Phương thức gạch dưới kép trong PythonTrong trường hợp bạn chưa quen với các phương pháp gạch dưới kép, đây là tóm tắt nhanh Trong Python, các phương thức gạch dưới kép (còn được gọi là phương thức dunder) làm cho quá tải toán tử có thể xảy ra Một phương thức dunder được triển khai trong một lớp để xác định hành vi cho những gì xảy ra khi một thao tác cụ thể được gọi trên một đối tượng Một ví dụ phổ biến của phương thức dunder là phương thức __init__. Phương thức này được tự động gọi khi một đối tượng được tạo Ví dụ 0Phương thức __add__() trong PythonPhương thức __add__() trong Python là một phương thức đặc biệt xác định điều gì sẽ xảy ra khi bạn thêm hai đối tượng bằng toán tử +. Khi bạn gọi o1 + o2, bạn đang gọi o1. __thêm__(o2) Hãy xem một ví dụ minh họa bằng cách tạo một lớp Trọng lượng 1Bây giờ, hãy tạo hai đối tượng Trọng lượng và thử cộng chúng lại với nhau 2đầu ra 3Lỗi này cho biết các đối tượng Trọng lượng không hỗ trợ phép cộng với toán tử +. Lý do tại sao điều này không thành công là do bạn chưa chỉ định điều gì sẽ xảy ra khi gọi + trên hai đối tượng Trọng lượng Để xác định điều gì sẽ xảy ra khi thêm trọng số, bạn cần triển khai phương thức __add__() trong lớp Trọng số Trong ví dụ này, việc thêm hai đối tượng Cân nặng sẽ tạo ra một đối tượng Cân nặng mới có số kilôgam bằng tổng số kilôgam của hai đối tượng Cân nặng Đây là giao diện của nó trong mã 4
Bây giờ bạn có thể thêm hai đối tượng Trọng lượng với nhau bằng cách 5đầu ra 6Lưu ý cách gọi w1 + w2 hoàn toàn giống với cách gọi w1. __thêm__(w2) Ví dụ 7đầu ra 6Nhân tiện, bây giờ bạn cũng có thể gọi toán tử + trên nhiều Trọng số 30 301 đầu ra 30 302 Nhưng tại sao nó hoạt động? Điều này tập trung vào quyền ưu tiên của nhà điều hành. Khi bạn tính tổng ba số nguyên, trước tiên Python tính tổng hai số nguyên rồi cộng số thứ ba vào tổng đó Nói cách khác, trình thông dịch Python trước tiên tính tổng w1 + w2. Kết quả của việc này là một đối tượng số nguyên mà w3 được thêm vào. Vì vậy, phía sau hậu trường w1 + w2 + w3 trông như thế này 30 303 Vui lòng dùng thử trên trình chỉnh sửa của bạn. Ngoài ra, vui lòng mở rộng chuỗi để hiểu cách thức hoạt động của nó Thêm các loại đối tượng khác nhau lại với nhauCho đến giờ bạn đã thấy cách cộng các đối tượng Trọng lượng lại với nhau Nhưng giả sử bạn cũng muốn thêm số nguyên và trọng số Hỗ trợ điều này thật dễ dàng. Sửa đổi phương thức __add__() để nó kiểm tra loại đối tượng khác
Đây là giao diện của nó trong mã 30 304 Bây giờ bạn có thể thêm các đối tượng Trọng lượng và ints 30 305 đầu ra 30 306 Nhưng như bạn đã biết, tổng hai giá trị trong toán học là giao hoán. Nói cách khác, a+b là b+a. Hãy xem điều gì sẽ xảy ra khi chúng ta cố gắng đảo ngược thứ tự của phép cộng 30 307 đầu ra 30 308 Điều này không thành công vì bây giờ bạn đang cố gọi (200). __thêm__(w1). Nói cách khác, bạn cho rằng int cũng hỗ trợ thêm các đối tượng Weight vào nó, điều này rõ ràng là không đúng Đây là nơi phương thức __radd__() trợ giúp Phương thức __radd__() trong PythonBây giờ bạn đã biết phương thức __add__() làm gì, bạn nên biết __radd__() làm gì, vì nó liên quan chặt chẽ với phương thức __add__() Phương thức __radd__() có nghĩa là thêm ngược Phép cộng đảo ngược biến a + b thành b + a. Điều này có nghĩa là một. __add__(b) biến thành b. __radd__(a) Nhưng tại sao? Hãy chứng minh vấn đề mà điều này giải quyết với hạng Trọng lượng từ chương trước Như bạn đã thấy, việc thêm một đối tượng số nguyên và Trọng lượng theo thứ tự này không thành công 30 309 Điều này dẫn đến lỗi sau 30 308 Lỗi nói rằng không thể cộng int và Weight lại với nhau. Điều này không có gì đáng ngạc nhiên, vì kiểu int tích hợp không biết gì về Trọng lượng Như bạn đã biết, gọi 150 + w1 tương đương với (150). __thêm__(w1). Vì vậy, dưới mui xe, gọi (150). __add__(w1) gây ra sự cố Để khắc phục sự cố, nó không phải là một tùy chọn để hỗ trợ int thêm các đối tượng Trọng lượng. Nhưng những gì bạn có thể làm thay vào đó là làm cho đối tượng Trọng lượng hỗ trợ thêm ints Nói cách khác, bạn muốn trao đổi các cuộc gọi như thế này 01Với cái này 02Đây là những gì phương thức __radd__() thực hiện. Nó đảo ngược thứ tự bổ sung. Nói cách khác, một. __add__(b) trở thành b. __radd__(a) Vì vậy, hãy triển khai phương thức __radd__() vào lớp Trọng lượng. Điều này sẽ trả về một đối tượng Trọng lượng trong đó một số nguyên được thêm vào kilôgam 03Bây giờ mã bị lỗi trước đó chạy thành công 04đầu ra 6Bây giờ bạn đã biết phương thức __radd__() hoạt động như thế nào và khi nào nó có thể hữu ích Nói chính xác, bạn cũng có thể sử dụng phương thức __add__() trong phương thức __radd__() vì nó biết cách xử lý các đầu vào số nguyên. Điều này đơn giản hóa mã một chút 06Dù sao, việc hỗ trợ __radd__() làm cho mã nhất quán. Bây giờ cả a + b và b + a đều hoạt động như mong đợi Nhân tiện, bây giờ lớp Weight hỗ trợ __radd__() nên cũng có thể gọi hàm sum() trong danh sách các đối tượng Weight Ví dụ 07đầu ra 08Nếu không có __radd__() thì điều này là không thể. Điều này là do hàm sum() tích hợp bắt đầu tính tổng từ 0. Điều này có nghĩa là thao tác đầu tiên sẽ là (0). __add__(w1), sẽ không hoạt động nếu không có triển khai thêm ngược biến nó thành w1. __radd__(0) Sự kết luậnHôm nay bạn đã biết phương thức __add__() trong Python là gì và cách sử dụng nó Tóm lại, bất cứ khi nào bạn gọi obj1 + obj2 bằng Python, bạn thực sự đang gọi obj1. __add__(obj2) đằng sau hậu trường Nói cách khác, để cộng hai đối tượng lại với nhau trong Python, lớp triển khai các đối tượng cần triển khai phương thức __add__() Một phương thức liên quan khác là phương thức __radd__(). Điều này lật a+b với b+a. Khi một. __add__(b) không thành công, cuộc gọi trở thành b. __radd__(a). Điều này hữu ích khi a không hỗ trợ thêm b, nhưng b có thể được hỗ trợ thêm a |