Tôi muốn thiết lập một lớp học sẽ hủy bỏ trong quá trình tạo cá thể dựa trên giá trị của đối số được chuyển đến lớp. Tôi đã thử một vài điều, một trong số họ là nâng cao một lỗi trong phương pháp __new__
:Làm cách nào để hủy bỏ việc tạo đối tượng đối tượng bằng Python?
class a():
def __new__(cls, x):
if x == True:
return cls
else:
raise ValueError
Đây là những gì tôi đã hy vọng sẽ xảy ra:
>>obj1 = a(True)
>>obj2 = a(False)
ValueError Traceback (most recent call last)
obj1
tồn tại nhưng không obj2
.
Bất kỳ ý tưởng nào?
bạn không nên ghi đè '__init __ (self, ...)' thay thế? –
@matt b. Nó không phải là ngữ nghĩa nếu sau đó ý định là để ngăn chặn việc tạo đối tượng. Nó hoạt động mặc dù. – aaronasterling
@AaronMcSmooth: Tại sao việc tăng ngoại lệ trong '__new__' thích hợp hơn để tăng một trong' __init__'. Kết quả có vẻ giống với tôi và '__init__' là nơi tất cả các mã khởi tạo khác đi. Tại sao không nên đến đó? – Arlaharen