Câu hỏi của tôi là một câu hỏi thiết kế. Trong Python, nếu mã trong "hàm tạo" của bạn không thành công, đối tượng sẽ không được định nghĩa. Do đó:Thực hành Xấu để chạy mã trong hàm tạo có khả năng bị lỗi?
someInstance = MyClass("test123") #lets say that constructor throws an exception
someInstance.doSomething() # will fail, name someInstance not defined.
Tôi có một trường hợp sao chép mã sẽ xảy ra nếu tôi xóa mã dễ bị lỗi từ hàm tạo của mình. Về cơ bản, hàm tạo của tôi điền vào một vài thuộc tính (thông qua IO, nơi có nhiều lỗi có thể đi sai) có thể được truy cập với các getters khác nhau. Nếu tôi xóa mã khỏi trình thu thập, tôi sẽ có 10 getters với mã dán sao chép giống như:
- là thuộc tính thực sự được đặt?
- làm một số hành động IO để điền vào các thuộc tính
- trở lại nội dung của các biến trong câu hỏi
Tôi không thích điều đó, bởi vì tất cả getters tôi sẽ chứa rất nhiều mã. Thay vào đó tôi thực hiện các hoạt động IO của tôi ở vị trí trung tâm, hàm tạo và điền vào tất cả các thuộc tính của tôi.
Làm cách nào để thực hiện điều này?
ok, tôi sẽ nhớ rằng, tôi m vẫn còn mới ở đây và muốn cung cấp tín dụng cho những người dành thời gian quý báu của họ, cố gắng trả lời câu hỏi của tôi, tôi thực sự đánh giá cao nó! – Tom
Câu hỏi này đến từ Python và thậm chí từ việc giải thích tất cả những gì về RAII hoặc tại sao chúng ta có thể/không thể thực hiện các hoạt động trong hàm tạo có thể tăng ngoại lệ? – lispmachine
@Neil Butterworth: điều này không thực sự quan trọng vì bạn có thể chấp nhận một anwser tốt hơn sau này. –