tôi đi qua sau trong python docs:Làm thế nào để python ngăn chặn một lớp được phân lớp?
bool ([x])
Chuyển đổi một giá trị cho một Boolean, sử dụng các thủ tục kiểm tra thật chuẩn. Nếu x là false hoặc bị bỏ qua, điều này trả về False; nếu không nó trả về True. bool cũng là một lớp, là một lớp con của int. Lớp bool không thể được phân lớp thêm. Các trường hợp duy nhất của nó là False và Đúng.
Tôi chưa bao giờ trong đời tôi muốn phân lớp bool
, nhưng tự nhiên tôi ngay lập tức đã thử nó, và đủ chắc chắn:
>>> class Bool(bool):
pass
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
class Bool(bool):
TypeError: Error when calling the metaclass bases
type 'bool' is not an acceptable base type
Vì vậy, câu hỏi: Làm thế nào là thực hiện? Và tôi có thể áp dụng cùng một kỹ thuật (hoặc một kỹ thuật khác) để đánh dấu các lớp của riêng tôi là final
, tức là, để giữ cho chúng không bị phân loại?
Tại sao bạn sẽ không muốn phải phân lớp 'bool'? Bạn có thể tạo các lớp con '10' để biểu diễn mỗi trạng thái boolean có thể có. – jamylak
Cảm ơn @Martijn, trông giống như một câu hỏi liên quan chặt chẽ. Nó không xuất hiện trong quá trình tìm kiếm SO của tôi (tôi đã nghĩ nên thêm "final" vào các từ tìm kiếm). – alexis