2017-07-06 15 views
0

私はいくつかのプロパティを持つクラスを持っています。各プロパティの値をそれぞれ1行にしたいだけです。クラスインスタンス変数のリストへの関数str

私はマップを使用しようとしましたが、リスト内の各クラス(<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__'を ' __str__'を呼び出すので、すべての場合にカスタム形式が呼び出されます。 –

関連する問題