Tôi có một chức năngLàm thế nào để kiểm tra xem len là hợp lệ
def foo(bar):
#do some things
len(bar)
Nếu tôi gọi
foo(42)
nó ném một ngoại lệ của
TypeError: object of type 'int' has no len()
Làm thế nào để kiểm tra xem các bước giá trị có thể được sử dụng với len()?
Điều này không cần phải là '__len__ trong dir (bar) '? Dù bằng cách nào, sử dụng 'hasattr' thì tốt hơn nếu bạn đi theo phương pháp này – Daenyth
Ngay cả đối tượng có thuộc tính' __len__', nó không có nghĩa là nó hợp lệ (hoặc OP nên xác định cái gì là ** hợp lệ **). Ví dụ, một lớp có thể định nghĩa một hàm '__len__' trả về một' str', và nó sẽ vượt qua bài kiểm tra 'hasattr' nhưng vẫn ném ngoại lệ' TypeError' khi bạn gọi 'len()' trên nó. Đây là chính xác những gì ** xử lý ngoại lệ ** được thiết kế cho, trừng phạt chúng cho tôi đầu vào bẩn. – Nier