Trong Python, bạn có Không có
Singleton, có hành vi kỳ lạ trong một số trường hợp:
>>> a = Không có
>>> loại(a)
>>> isinstance(a, Không có)
Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
Tệp "", dòng 1, trong
TypeError: isinstance() arg 2 phải là một lớp, kiểu hoặc một bộ các lớp và kiểu
Đầu tiên,
trình diễn Không có
Không phải là một loại, nhưng Không cóLoại
Đúng. Tuy nhiên, khi bạn chạy isinstance(a, NoneType)
, nó trả về lỗi:NameError: tên 'NoneType' không được xác định
Bây giờ, với điều này, nếu bạn có một đầu vào với thiết lập mặc định là Không có
và bạn cần kiểm tra, bạn sẽ làm như sau:
nếu biến là Không có:
#làmgìđó
khác:
#làmgìđó
Tại sao tôi không thể thực hiện những điều sau:
nếu isinstance(biến, Không có): #hoặc Không có Kiểu
#làmgìđó
khác:
#làmgìđó
Tôi chỉ đang tìm kiếm một lời giải thích chi tiết để hiểu rõ hơn về điều này
Sửa: Ứng dụng tốt
Giả sử tôi muốn sử dụng là trường hợp
Để tôi có thể biến đổi
Có nhiều loại tình huống mà bạn có thể làm điều gì đó, bao gồmKhông có
:
nếu isinstance(biến,(Không có, chuỗi, float)):
#làmgìđó
Bạn có thể thử:
>>> biến = Không có
>>> isinstance(biến,kiểu(Không có))
ĐÚNG VẬY
>>> biến = Đúng
>>> isinstance(biến,kiểu(Không có))
SAI
là trường hợpChấp nhận 2 tham số isinstance(đối tượng, thông tin lớp)
Ở đây, bằng cách vượt qua Không có
Bạn sẽ thông tin lớp học
được đặt thành Không, do đó bạn sẽ gặp lỗi. Bạn cần phải truyền vào một kiểu dữ liệu.
Tôi là một lập trình viên xuất sắc, rất giỏi!