- Cú pháp
- Bối cảnh phân chia thực sự
- Điều gì khác biệt giữa __truediv __ [] và __rtruediv __ []?
- Đi đâu từ đây?
Cú pháp
object.__rtruediv__[self, other]
Phương pháp Python __rtruediv__[]
thực hiện hoạt động phân chia thật ngược với các toán hạng được phản ánh, hoán đổi. Vì vậy, khi bạn gọi x / y
, Python cố gắng gọi x.__truediv__[y]
. Nếu phương thức không được thực hiện, Python sẽ cố gắng gọi __rtruediv__
trên toán hạng bên phải và nếu điều này không được triển khai, nó sẽ tăng TypeError
.
Chúng tôi gọi đây là một phương pháp Dunder của người Viking đối với phương pháp Double Double Undercore [còn được gọi là Phương pháp ma thuật của Hồi giáo]. Để có được một danh sách tất cả các phương pháp Dunder với lời giải thích, hãy xem bài viết Dunder Cheat Sheet của chúng tôi trên blog này.Double Underscore Method” [also called “magic method”]. To get a list of all dunder methods with explanation, check out our dunder cheat sheet article on this blog.
Bối cảnh phân chia thực sự
Điều gì khác biệt giữa __truediv __ [] và __rtruediv __ []?
Đi đâu từ đây?
Phương pháp Python __rtruediv__[]
thực hiện hoạt động phân chia thật ngược với các toán hạng được phản ánh, hoán đổi. Vì vậy, khi bạn gọi x / y
, Python cố gắng gọi x.__truediv__[y]
. Nếu phương thức không được thực hiện, Python sẽ cố gắng gọi __rtruediv__
trên toán hạng bên phải và nếu điều này không được triển khai, nó sẽ tăng TypeError
.
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...
Chúng tôi gọi đây là một phương pháp Dunder của người Viking đối với phương pháp Double Double Undercore [còn được gọi là Phương pháp ma thuật của Hồi giáo]. Để có được một danh sách tất cả các phương pháp Dunder với lời giải thích, hãy xem bài viết Dunder Cheat Sheet của chúng tôi trên blog này.
Phương pháp Python __truediv__[]
được gọi để thực hiện hoạt động phân chia bình thường
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...0 được gọi là Phân khu True, trái ngược với hoạt động phân chia sàn
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...1.
Điều gì khác biệt giữa __truediv __ [] và __rtruediv __ []?
Đi đâu từ đây?
print[x / y]
Phương pháp Python __rtruediv__[]
thực hiện hoạt động phân chia thật ngược với các toán hạng được phản ánh, hoán đổi. Vì vậy, khi bạn gọi x / y
, Python cố gắng gọi x.__truediv__[y]
. Nếu phương thức không được thực hiện, Python sẽ cố gắng gọi __rtruediv__
trên toán hạng bên phải và nếu điều này không được triển khai, nó sẽ tăng TypeError
.
- Chúng tôi gọi đây là một phương pháp Dunder của người Viking đối với phương pháp Double Double Undercore [còn được gọi là Phương pháp ma thuật của Hồi giáo]. Để có được một danh sách tất cả các phương pháp Dunder với lời giải thích, hãy xem bài viết Dunder Cheat Sheet của chúng tôi trên blog này.
- Phương pháp Python
__truediv__[]
được gọi để thực hiện hoạt động phân chia bình thườngclass Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...
0 được gọi là Phân khu True, trái ngược với hoạt động phân chia sànclass Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...
1.
Ví dụ: để đánh giá biểu thức x / y
, Python cố gắng gọi x.__truediv__[y]
.
Trong ví dụ sau, bạn tạo một lớp tùy chỉnh
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...4 và ghi đè phương thức
__truediv__[]
để nó trả về một chuỗi giả khi cố gắng chia hai đối tượng class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...4 bằng cách sử dụng hoạt động phân chia thực
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...7.
Để hiểu chi tiết hoạt động này, vui lòng đọc qua hướng dẫn của chúng tôi hoặc xem video sau:
class Data_1: pass class Data_2: def __rtruediv__[self, other]: return 'called reverse true division' x = Data_1[] y = Data_2[] print[x / y] # called reverse true division
References:
- //docs.python.org/3/reference/datamodel.html
Đi đâu từ đây?
Phương pháp Python __rtruediv__[]
thực hiện hoạt động phân chia thật ngược với các toán hạng được phản ánh, hoán đổi. Vì vậy, khi bạn gọi x / y
, Python cố gắng gọi x.__truediv__[y]
. Nếu phương thức không được thực hiện, Python sẽ cố gắng gọi __rtruediv__
trên toán hạng bên phải và nếu điều này không được triển khai, nó sẽ tăng TypeError
.
Chúng tôi gọi đây là một phương pháp Dunder của người Viking đối với phương pháp Double Double Undercore [còn được gọi là Phương pháp ma thuật của Hồi giáo]. Để có được một danh sách tất cả các phương pháp Dunder với lời giải thích, hãy xem bài viết Dunder Cheat Sheet của chúng tôi trên blog này.
Phương pháp Python __truediv__[]
được gọi để thực hiện hoạt động phân chia bình thường
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...0 được gọi là Phân khu True, trái ngược với hoạt động phân chia sàn
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...1.
Ví dụ: để đánh giá biểu thức x / y
, Python cố gắng gọi x.__truediv__[y]
.
Trong ví dụ sau, bạn tạo một lớp tùy chỉnh
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...4 và ghi đè phương thức
__truediv__[]
để nó trả về một chuỗi giả khi cố gắng chia hai đối tượng class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...4 bằng cách sử dụng hoạt động phân chia thực
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...7.
Để hiểu chi tiết hoạt động này, vui lòng đọc qua hướng dẫn của chúng tôi hoặc xem video sau:YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Python Division Deep Dive
Giả sử, bạn muốn chia hai đối tượng
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...8 và
class Data: def __truediv__[self, other]: return '... my result of truediv...' a = Data[] b = Data[] c = a / b print[c] # ... my result of truediv...9 bằng cách sử dụng phân chia thực:
Python trước tiên cố gắng gọi đối tượng bên trái phương thức ____ ____99. Nhưng điều này có thể thất bại vì hai lý do:
Phương pháp
print[x / y]2 không được thực hiện ngay từ đầu hoặc
Phương pháp
print[x / y]2 được triển khai nhưng trả về giá trị
print[x / y]4 cho biết các loại dữ liệu không tương thích.