Python __打印时未调用str_u;方法
我正在尝试创建一个简单的sql builder类,但是当我尝试打印import_uu的输出时,它似乎不会返回get_sql的内容,即使它的in_ustr_u函数也是如此。我做错了什么Python __打印时未调用str_u;方法,python,class,Python,Class,我正在尝试创建一个简单的sql builder类,但是当我尝试打印import_uu的输出时,它似乎不会返回get_sql的内容,即使它的in_ustr_u函数也是如此。我做错了什么 class Query(object): """ Query builder entry functions """ @classmethod def _builder(cls): return QueryBuilder() @classmethod
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'
打印脚本:
importQuery = Query.import_(sourceTypeEnum)
print(importQuery)
您需要在QueryBuilder.import方法的末尾添加一个return self,否则它将返回None,因此您的importQuery将为None,而不是您期望的QueryBuilder实例。您使用的是IDE还是Jupyter?只写变量名而不调用print将调用_repr__;。现在添加了打印脚本工厂模式函数需要返回self,这样您就可以声明importQuery=Query.import\ux。。。否则,只能使用类构造函数创建对象。请不要这样编写代码。Python不是Java。而且,只有返回self才允许链接导入调用,这使它成为一种合适的构建器模式。