Polecenie With w pythonie zwraca obiekt None, mimo że działa metoda __init__

Dla klasy DB z następującymw tym metoda:

class DB:
    def __init__(self, dbprops):
        self.dbprops = dbprops
        self.conn = self.get_connection(self.dbprops)
        debug("self.conn is %s" %self.conn)

    def __enter__(self):
        pass
    def __exit__(self, exc_type, exc_val, exc_tb):
        if not self.conn is None:
            self.close()

A dla metody klienta wywołującej ją w następujący sposób:

with DB(self.dbprops) as db:
    if not db:
        raise Exception("Db is None inside with")
    return db.get_cmdline_sql()

Wyjście pokazuje komunikat debugowania - a więcw tym metoda została pomyślnie wywołana:

  File "./classifier_wf.py", line 28, in get_cmdline_mysql
      raise Exception("Db is None inside with")

Wyjątek: Db nie ma wewnątrz

Aktualizacja: naprawionowchodzić metoda zwracania obiektu DB. Ale potrzebujesz pomocy, jak go wywołać:

  def __enter__(self, dbprops):
    return DB(dbprops)

Wywołanie go jednym parametrem najwyraźniej nie działa:

 with DB(dbprops) as db:

TypeError: __enter__() takes exactly 2 arguments (1 given)

Teraz nie podążam, ponieważ „ja” ma być wypełnione automatycznie.

questionAnswers(1)

yourAnswerToTheQuestion