Tôi đang chơi xung quanh một chút với mô-đun gợi ý/gõ mới với python3.5 cố gắng tìm cách xác nhận nếu loại được gợi ý bằng loại biến thực tế và bắt gặp một thứ khiến tôi ngạc nhiên.Tại sao việc khôi phục ([1, 2, 3], Danh sách [str]) được đánh giá là đúng?
>>> from typing import List
>>> someList = [1, 2, 3]
>>> isinstance(someList, List[str])
True
Tiếp tục tìm kiếm của tôi cho việc tìm kiếm một cách để so sánh một biến để nó ám chỉ loại I cũng đã thử điều này:
>>> anotherList = ["foo", "bar"]
>>> type(anotherList) is List[str]
False
có bất cứ ai có thể giải thích tại sao chính xác đánh giá lại cựu True?
Và tiếp tục trở đi, có cách nào để kiểm tra xem loại biến có bằng loại từ mô-đun nhập không?
Vâng, một điều, 'loại (x) là' và 'isinstance (x, a)' chắc chắn không giống nhau. Một đối tượng có thể là một thể hiện của nhiều kiểu (với một hệ thống phân cấp thừa kế), nhưng 'type (x)' chỉ cung cấp cho bạn loại duy nhất cụ thể nhất của nó. – BrenBarn
Yup, tôi biết điều đó sau khi đã thực hiện một số thử nghiệm với nó. Vẫn cảm thấy như bao gồm nó trong câu hỏi của tôi vì nó thường được đưa ra như là go-to khi yêu cầu bất cứ điều gì về so sánh loại trong Python. – McMuffinton
Loại '' '(['foo', 'bar']) == Danh sách [str]' '' đánh giá là gì? –