2013-12-18 44 views
1

我有這個簡單的類,有3個屬性名字姓氏和出生年份,並且當我定義這個類的一個對象時,而不是接收出生年份我想要這個人的年齡。添加一個整數到一個類屬性

class Person: 
    def __init__(self,Fname,Lname,Byear): 
     self.firtsName = Fname 
     self.lastName = Lname 
     self.birth_year = Byear 
    def __str__(self): 
     return '{}, {} Age:{}'.format(self.firtsName,self.lastName,self.birth_year) 
p1=Person('Olivia','Parker','1985') 
print(p1) 

我想當年減去的出生年份,使用這種 import date from datetime
current_year=date.today().year

+0

而你的問題是? –

回答

0

我想這是你要做的:

>>> class Person: 
... def __init__(self,Fname,Lname,Byear): 
...  self.firtsName = Fname 
...  self.lastName = Lname 
...  self.birth_year = Byear 
... def __str__(self): 
...  return "%s, %s Age: %s" %(self.lastName, self.firtsName, (datetime.datetime.now().year-self.birth_year)) 
... 
>>> p1=Person('Olivia','Parker',1985) 
>>> print(p1) 
Parker, Olivia Age: 28 

記住,雖然,這不會考慮到一些細微差別,如「現在是2014年1月,出生於1985年10月)

+0

謝謝。我會記住這一點 – user3116408

1

你想要property

from datetime import date 

class Person: 
    def __init__(self, fname, lname, byear): 
     self.first_name = fname 
     self.last_name = lname 
     self.birth_year = byear 

    @property 
    def age(self): 
     return date.today().year - self.birth_year 

    def __str__(self): 
     return '{0.first_name}, {0.last_name} Age:{0.age}'.format(self) 

p1 = Person('Olivia', 'Parker', 1985) 
print(p1) 

打印

Olivia, Parker Age:28 

順便說一句,代碼混合的屬性使用的lower_case_with_underscoresmixedCase。選一個。請參閱PEP 8 -- Style Guide for Python Code -- Descriptive: Naming Styles

+0

它工作得很好,謝謝你的建議 – user3116408

+0

@ user3116408,你只能接受一個答案。 ;) – falsetru

相關問題