将一个整数添加到类属性

时间:2013-12-18 18:37:48

标签: python python-2.7

我有这个简单的类,有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

2 个答案:

答案 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_underscoresmixedCase作为属性。选一个。请参阅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月”。