Tôi đang sử dụng python 2.7.3 trên Windows. Tôi đã cố gắng ghi đè phương pháp ma thuật __instancecheck__
như một phương thức lớp học. Nhưng tôi không thể làm cho nó hoạt động được.phương thức lớp __instancecheck__ không hoạt động
class Enumeration(int):
@classmethod
def __instancecheck__(cls, inst):
if type(inst) == cls:
return True
if isinstance(inst, int) and inst in range(0,10):
return True
return False
print isinstance(1, Enumeration) # prints False
print isinstance(1, Enumeration()) # prints True
Tôi giả định tuyên bố in đầu tiên sẽ nhận được True. Nhưng có vẻ như phương pháp ma thuật __instancecheck__
không được gọi. Và tôi không biết tại sao câu lệnh in thứ hai có thể hoạt động vì số isinstance
nên lấy một lớp/kiểu làm tham số thứ hai.
Có ai biết vấn đề là gì không? Cảm ơn.
Cảm ơn bạn. @ thg435 đã cho tôi một ví dụ tốt và bây giờ tôi biết làm thế nào để đạt được điều này. – adarliu