2009-10-21 23 views

Trả lời

30

Tôi nghĩ rằng "đúc" nên không được sử dụng cho Python; chỉ có loại chuyển đổi, nhưng không có phôi (theo nghĩa C). Chuyển đổi loại được thực hiện, ví dụ: thông qua trong đó đối tượng o được chuyển đổi thành một số nguyên (thực tế, một đối tượng số nguyên được tạo ra từ o). Coercion xảy ra trong trường hợp hoạt động nhị phân: nếu bạn thực hiện x+y và x và y có các loại khác nhau, chúng được ép buộc thành một loại duy nhất trước khi thực hiện thao tác. Trong 2.x, một phương thức đặc biệt __coerce__ cho phép đối tượng kiểm soát sự ép buộc của chúng.

38

Truyền rõ ràng. Coerce là ẩn.

Các ví dụ bằng Python sẽ là:

cast(2, POINTER(c_float)) #cast 
1.0 + 2 #coerce 
1.0 + float(2) #conversion 

Cast thực sự chỉ đi lên trong thư mục C FFI. Những gì thường được gọi là đúc trong C hoặc Java được gọi là chuyển đổi trong python, mặc dù nó thường được gọi là đúc vì tương đồng của nó với những ngôn ngữ khác. Trong khá nhiều ngôn ngữ mà tôi có kinh nghiệm (bao gồm cả python) Coercion là loại thay đổi ngầm định.

+2

-1. Đó là danh pháp C++; Python sử dụng các thuật ngữ khác nhau. – SamB

+12

+1: Đối với câu hỏi này, ví dụ là hoàn toàn hợp lệ. Và nó được đánh dấu rõ ràng là C++. – user183037

+2

Câu hỏi đặt ra là cụm từ 'đúc' trong ngữ cảnh của ngôn ngữ Python. Câu trả lời giải thích rằng 'float (1)' là xây dựng, không đúc, là tốt hơn. –

Các vấn đề liên quan