Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các kiểu Context Manager trong Python


Trong Python, ngữ cảnh runtime được hỗ trợ bởi câu lệnh with. Ngữ cảnh được định nghĩa bởi context manager. Sử dụng context manager, ta có thể tạo các lớp do người dùng định nghĩa để xác định ngữ cảnh runtime. Nó vào tác vụ trước khi thực hiện thân câu lệnh, và khi thân câu lệnh hoàn thành, nó kết thúc.

Có hai phương thức khác nhau cho context manager:

Phương thức __enter__()

Phương thức __enter__() dùng để vào ngữ cảnh runtime. Nó trả về đối tượng hiện tại hoặc một đối tượng liên quan khác. Giá trị trả về được gán cho identifier trong mệnh đề as của câu lệnh with.

Phương thức __exit__(exc_type, exc_val, exc_tb)

Phương thức __exit__() trả về kết quả kiểu Boolean. Nó chỉ ra ngoại lệ nào đã xảy ra. Nếu có ngoại lệ cho câu lệnh with, nó sẽ chuyển đến khối kết thúc.

Ví dụ mã

class MyFileManager:
    def __init__(self, fname):
        self.file_name = fname
    def __enter__(self):
        self.myFile = open(self.file_name, 'r')
        return self.myFile
    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.myFile:
            self.myFile.close()

with MyFileManager('sampleTextFile.txt') as myFile:
    x = myFile.read()
print(x)

Kết quả

Test File. We can store different contents in this file ~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]