Tôi phải mở một đối tượng giống như tệp trong python (đó là 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 pháp của lớp học của tôi. Làm thế nào tôi đã làm nó đã được mở tập tin trong constructor, và sau đó đóng nó trong destructor. Tôi nhận được lỗi lạ mặc dù và tôi nghĩ rằng nó đã làm với thu gom rác và như vậy, tôi vẫn không được sử dụng để không biết chính xác khi đối tượng của tôi đang bị xóa = \Thực hiện việc sử dụng 'with object() như f' trong lớp tùy chỉnh trong python
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 thông số mỗi khi tôi mở nó và nó gây phiền nhiễu khi làm tất cả những điều đó khắp nơi. Vì vậy, tôi muốn thực hiện một lớp bên trong để xử lý tất cả những gì để tôi có thể sử dụng nó làm
with Meter('/dev/ttyS2') as m:
tôi đang tìm kiếm trực tuyến và tôi không thể tìm thấy một câu trả lời thực sự tốt về cách cú pháp with
được thực hiện. Tôi thấy rằng nó sử dụng các phương pháp __enter__(self)
và __exit(self)__
. Nhưng tất cả những gì tôi phải làm là triển khai các phương thức đó và tôi có thể sử dụng cú pháp? 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 không?
'def __enter __ (self): trả về self' nếu bạn muốn tham chiếu đến' Meter' trong khối. – Morgoth