我有这个简单的类,有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 :(得分: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
BTW,代码混合使用lower_case_with_underscores
,mixedCase
作为属性。选一个。请参阅PEP 8 -- Style Guide for Python Code -- Descriptive: Naming Styles。
答案 1 :(得分: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月”。