繁体   English   中英

打印时未调用__str__方法

[英]__str__ method not being called when printing

我正在尝试创建一个简单的sql builder类,但是当我尝试打印import_的输出时,即使它在__str__函数中,它似乎也不返回get_sql的内容。 我究竟做错了什么?

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)

您需要添加一个return self ,在你结束QueryBuilder.import_方法,否则将返回None ,因此你importQueryNone -不是你的实例QueryBuilder如你预期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM