2017-07-06 70 views
0

我有一个包含多个属性的类。我只想每个属性的值都在一行上。将函数str映射到类实例变量的列表

我试过使用map,但它指向列表中每个类的实例(<task_Backlog_Puller.Case object at 0x7ff2018f0240>),我需要获取每个类属性的值。我无法从第三方导入图书馆。

class Case: 
    def __init__(self, case_number, owner, title, status, priority, date_created): 
     self.case_number = case_number 
     self.owner = owner 
     self.title = title 
     self.status = status 
     self.priority = priority 
     self.date_created = date_created 




def create_report_of_cases_older_than_30_days(total_number_of_all_cases, number_of_cases_older_than_30_days, cases_older_than_30_days): 
    report = "Total number of cases in team backlog is " + str(total_number_of_all_cases) + '\n' 
    report += "Total number of cases older than 30 days is " + str(number_of_cases_older_than_30_days) + '\n' 
    report += '\n' 
    report += '\n'.join(map(str, cases_older_than_30_days)) 
    logger.info("Report -> {}".format(report)) 
    return str(report) 

2017-07-06 18:27:00,422 [ INFO] task_Backlog_Puller.116 --- Report -> Total number of cases in team backlog is 17 
Total number of cases older than 30 days is 9 

<task_Backlog_Puller.Case object at 0x7ff2018f0240> 
<task_Backlog_Puller.Case object at 0x7ff202540a20> 
<task_Backlog_Puller.Case object at 0x7ff1fe3b45f8> 
<task_Backlog_Puller.Case object at 0x7ff20043ee80> 
<task_Backlog_Puller.Case object at 0x7ff20043ee10> 
<task_Backlog_Puller.Case object at 0x7ff2018d16a0> 
<task_Backlog_Puller.Case object at 0x7ff2018d1cf8> 
<task_Backlog_Puller.Case object at 0x7ff2018d1a58> 
<task_Backlog_Puller.Case object at 0x7ff2018d1e80> 
+2

实施'__str__'魔术方法。 –

+0

您是否真的计划在'Case'类中使用任何方法?如果是这种情况,并且它是一种记录,那么最好通过使用'namedtuple'来服务 –

+0

没有方法或函数只是DTO –

回答

3

为了控制一个python类是如何转换为字符串,可以在类定义中定义一个__str__功能。

class Case: 
    def __init__(self, case_number, owner, title, status, priority, date_created): 
     self.case_number = case_number 
     self.owner = owner 
     self.title = title 
     self.status = status 
     self.priority = priority 
     self.date_created = date_created 

    def __str__(self): 
     return # create a string here based on the properties of self 

str(case) # will call case.__str__() 
+1

将'__repr__'分配给'__repr__'也是一个好主意, __str__',所以自定义格式将被调用所有情况。 –