2017-07-06 74 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__',所以自定義格式將被調用所有情況。 –