Ich versuche, eine einfache SQL-Builder-Klasse zu erstellen, aber wenn ich versuche, die Ausgabe von import_
zu drucken scheint es nicht den Inhalt von get_sql
, obwohl seine in __str__
Funktion. Was mache ich falsch?__str__ Methode wird nicht beim Drucken aufgerufen
class Query(object):
"""
Query builder entry functions
"""
@classmethod
def _builder(cls):
return QueryBuilder()
@classmethod
def import_(cls, source_type):
return cls._builder().import_(source_type)
class QueryBuilder(object):
"""
Query Builder is the main class that generates sql
"""
def __init__(self, quote_char='"'):
self._from = []
self._import = None
self._source_type = None
self.quote_char = quote_char
def import_(self, source_type):
if source_type == SourceType.XML:
raise KeyError('Importing a XML is not supported')
self._source_type = source_type
def __str__(self):
return self.get_sql(quote_char='"')
def get_sql(self):
if not (self._import):
return 'test'
return 'e'
drucken Skript:
importQuery = Query.import_(sourceTypeEnum)
print(importQuery)
Verwenden Sie eine IDE oder Jupyter? Wenn Sie nur den Variablennamen schreiben, ohne "print" aufzurufen, rufen Sie stattdessen "__repr__" auf. –
haben jetzt Skript hinzugefügt –
Factory-Muster-Funktionen müssen 'selbst zurückgeben', so können Sie 'importQuery = Query.import _ ..'. Andernfalls können Sie Objekte nur mit dem Klassenkonstruktor erstellen. – Vinny