Питон задача тема контекстный менеджер

Написал такой код. Не могу понять как сделать так что бы при открытии несуществующего файла менеджер автоматически создавал и открывал этот файл в режиме записи?

class File():
  def __init__(self,filename,mode):
    self.filename=filename
    self.mode=mode
    self.file=None
      
  def __enter__(self):
    self.file=open(self.filename)
    return self.file
    
  def __exit__(self, exc_type, exc_val, exc_tb):
    self.file.close()

with File('example.txt','w') as file:
    file.write('Всем привет')

Ответы (2 шт):

Автор решения: void

Не написал, а скопировал. Если бы ты писал, причем уже с уровнем классов, как в примере, то вопрос у тебя такой не возникал бы. У тебя есть mode, который w, и который потом нигде не используется в коде класса.

Подсказка, где менять:

self.file=open(self.filename)

Описание:

Create a new file if it does not exist:

f = open("myfile.txt", "w")
→ Ссылка
Автор решения: Bulya
class File():
    def __init__(self, filename, mode: str):
        self.filename = filename
        self.mode = mode
        self.file = None

    def __enter__(self):
        if self.mode == 'w':
            self.file = open(self.filename, 'w', encoding='utf-8')
        elif self.mode == 'a':
            self.file = open(self.filename, 'a', encoding='utf-8')
        elif self.mode == 'r':
            self.file = open(self.filename, 'r', encoding='utf-8')

        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file.close()


with File('example.txt', 'r') as file:
    # file.write('Всем привет!!')
    data = file.read()
    print(data)
→ Ссылка