Hướng dẫn python __rtruediv__ - python __rtruediv__

  • 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.

  1. 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.
  2. 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:

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.

Bài Viết Liên Quan

Chủ Đề