2017-11-01 6 views
0

質問:アーティストクラスの年齢メソッドを作成します。これはアーティストの年齢を「今日」から返します。例:Artist( "Hayley Williams"、(1988、12、27))age()は24を返します。これだけでなく、他の例でも動作します。Python:オブジェクト指向プログラミング(アーティストの年齢を取得する)

私の試み:

def get_date_today(): 
    return (2013, 10, 30) 

class Artist(object): 
    def __init__(self, name, dob): 
     self.name = name 
     self.dob = dob 

    def get_name(self): 
     return self.name 

    def get_dob(self): 
     return self.dob 

    def age(self): 
     return ((get_date_today())) - get_dob(self))/365 

は、しかし、私はちょうどタプルを減算することはできません実現しています。誰もがこのソリューションを改善する方法を考えていますか?

+0

日付を直接減算することはできません。それを 'datetime'オブジェクトに変換しなければ、それを差し引いて差分を取ることができます。あるいは、タプルで年を減算することもできます。 – Bijoy

+0

はい、これは 'datetime'を使わないと時間がかかります – 0TTT0

答えて

0

タプルを使用する場合は、タプルをdatetimeオブジェクトにアンパックするだけです。また、ローカルメソッドを呼び出すときにself.methodではなくmethod(self)を実行する必要があります。

from datetime import datetime 

def get_date_today(): 
    return (2013, 10, 30) 

dt = datetime(*get_date_today()) 

class Artist(object): 
    def __init__(self, name, dob): 
     self.name = name 
     self.dob = dob 

    def get_name(self): 
     return self.name 

    def get_dob(self): 
     return self.dob 

    def age(self): 
     return (datetime(*get_date_today()) - datetime(*self.get_dob())).days/365 

justin = Artist('JB', (1996, 8 ,28)) 
print(justin.age()) 
0

あなたがDateTimeのドキュメントを確認した場合、それらは次のような例を示しています。

関連する問題