Tôi phải mở một đối tượng giống tệp trong python (đó là một kết nối nối tiếp thông qua / dev /) và sau đó đóng nó. Điều này được thực hiện nhiều lần trong một số phương thức của lớp tôi. Tôi đã làm như thế nào là mở tệp trong hàm tạo, rồi đóng tệp trong hàm hủy. Mặc dù vậy, tôi đang gặp những lỗi kỳ lạ và tôi nghĩ nó liên quan đến bộ thu gom rác và như vậy, tôi vẫn chưa quen với việc không biết chính xác khi nào các đối tượng của mình bị xóa = \
Lý do tôi làm điều này là bởi vì tôi phải sử dụng tcsetattr
với một loạt các tham số mỗi khi tôi mở nó và nó gây khó chịu khi làm tất cả những điều đó ở khắp nơi. Vì vậy, tôi muốn triển khai một lớp bên trong để xử lý tất cả những điều đó để tôi có thể sử dụng nó làm
with Meter('/dev/ttyS2') as m:
Tôi đã tìm kiếm trực tuyến và tôi không thể tìm thấy câu trả lời thực sự tốt về cách with
thực hiện cú pháp. Tôi thấy rằng nó sử dụng các phương thức __enter__(self)
và __exit(self)__
. Nhưng có phải tất cả những gì tôi phải làm để triển khai các phương thức đó và tôi có thể sử dụng cú pháp with không? Hoặc là có nhiều đến nó?
Có một ví dụ về cách thực hiện điều này hoặc một số tài liệu về cách nó được triển khai trên các đối tượng tệp mà tôi có thể xem xét không?
def __enter__(self): return self
nếu bạn muốn tham chiếu đếnMeter
trong khối with.