2012-11-15 49 views
13

Các nguyên 2 có một phương pháp __add__:Tại sao không 2 .__ thêm __ (3) làm việc bằng Python?

>>> "__add__" in dir(2) 
True 

... nhưng gọi đó là đặt ra một Lỗi Cú pháp:

>>> 2.__add__(3) 
    File "<stdin>", line 1 
    2.__add__(3) 
      ^
SyntaxError: invalid syntax 

Tại sao tôi không thể sử dụng phương pháp __add__?

+1

biến thể của chủ đề này là những câu hỏi tương đối phổ biến ở đây. Nó khá thú vị, mặc dù tôi không thể thực sự thấy lý do tại sao bạn muốn làm điều này thay vì chỉ là '2 + 3'. – mgilson

+4

@mgilson: '(2) .__ add__' có thể đóng vai trò là hàm" thêm hai "thay vì' lambda x: x + 2'. – unutbu

+1

@unutbu - Thú vị. Tôi cho rằng đó sẽ là một cách thông minh (ít dễ dàng hơn để đọc?) Để làm điều đó ... Đó là một điểm tốt mặc dù. Tôi cho rằng tôi sẽ theo dõi nó trong tương lai! – mgilson

Trả lời

19

2. được phân tích cú pháp dưới dạng phao, vì vậy 2.__add__ là một Cú pháp.

Bạn có thể đánh giá

(2).__add__(3) thay thế.


In [254]: (2).__add__(3) 
Out[254]: 5 
4

Một cách khác để có được xung quanh 2. đang được phân tích như một phao là để chèn một khoảng trống giữa 2.

>>> 2 .__add__(3) 
5 
Các vấn đề liên quan