我的__str__太长了,写它的最佳方式

时间:2018-06-08 08:30:32

标签: python string python-3.x

我在我的一个班级中使用了这个__str__方法,但在我看来,我的代码中的python约定看起来有点太长了,而autopep并没有给我任何提示。

所以我想知道键入它的方法是什么 pythonic

我需要断行,因为解决方案和表格形状分别为52和52x52。

input = '4'                       
start_day = int(input)             
days = ["0","1","2","3","4","5","6"]
days_before = []
# Loop                
for day in days: 
    if int(day) > start_day:      # Either print
        print day    
    else:
        days_before.append(day)   # Or dump to second list
else:                             # When finished
    for day in days_before:       # Print second list
        print day

3 个答案:

答案 0 :(得分:3)

// This pointer is local to the translation unit, and is an
// implementation detail. It's not used anywhere else.
static QPointer<QNetworkAccessManager> globalManager;

// The global accessor method
QNetworkAccessManager *nMgr() {
  Q_ASSERT(!qApp || QThread::currentThread() == qApp->thread());
  return globalManager;
}

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);
  QNetworkAccessManager mgr;
  globalManager = &mgr;
  ...
}

如果您在使用多行字符串时不想在输出中添加额外的标签,则需要删除代码中的标签。

def __str__(self):
    pattern = '''
    Cost solution: {}
    Solution: {}
    Table: {}
    '''
    return pattern.format(self.cost, self.solution, self.table)

答案 1 :(得分:1)

您可以使用def __str__(self): return "Cost solution: {}\nSolution: {}\n\nTable {}".format(self.cost, self.solution, self.table) 方法以更多 pythonic 的方式组合字符串,但它仍然很长。

datetime

如果您需要使用反斜杠,可以在格式字符串结束后将其拆分为两行。

答案 2 :(得分:1)

Python 3.6引入了f-strings,允许短字符串&amp;格式

class foo:
  def __init__(self):
    self.cost = 12
    self.solution = "easy"
    self.table = "no"
  def __str__(self):
    return f"Cost: {self.cost}\nSolution: {self.solution}\nTable: {self.table}"

f = foo()
print(str(f))