2012-07-20 33 views
6

Giả sử tôi có một lớp cơ bản trong Python 3 đại diện cho một số kiểu dữ liệu giống như số. Tôi muốn làm cho nó như vậy khi tôi có một thể hiện, x, của lớp này tôi có thể gọi int (x) và có nó gọi chức năng chuyển đổi của tôi để trả về phần nguyên.Quá tải int() trong Python

Tôi chắc chắn điều này rất đơn giản, nhưng dường như tôi không thể tìm hiểu cách thực hiện.

Trả lời

13

Bạn ghi đè __int__ magic method theo ví dụ sau ...

class Test: 
    def __init__(self, i): 
     self.i = i 
    def __int__(self): 
     return self.i * 2 

t = Test(5) 
print(int(t)) 
# 10 
7

Ghi đè phương thức __int__().

+0

Tôi thích hợp trong giả định này là mới bằng Python 3? –

+2

@Joel: [Không phải trong ít nhất.] (Http://docs.python.org/reference/datamodel.html#object.__complex__) –

+0

Bạn học điều gì đó mới mỗi ngày! Mặc dù tôi ngạc nhiên khi tôi bỏ qua điều này trong khi đọc các tài liệu: P –