2013-12-18 42 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

相关问题