类中的__str__不返回字符串

时间:2017-08-26 19:12:51

标签: python

我正在构建一个简单的查询构建器,但是在尝试测试时,似乎Query.import_('')返回一个类对象而不是字符串,因为我在测试类型时得到<'query.QueryBuilder'>。无论如何要把它作为一个字符串?

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
      return self

  def __str__(self):
      return self.get_sql(quote_char='"')

  def get_sql(self):
      if not (self._import):
          return 'select 1 from dual'
      return 'select 1 from dual'

1 个答案:

答案 0 :(得分:0)

正如this comment正确观察到的那样,您正在测试类型,而不是打印出来的对象。当您在其上调用__str__函数或在其上调用str时,会调用print方法。

在你的情况下,你没有。要查看__str__方法的输出,您可以

x = QueryBuilder()
print(x)