向类中添加整数

2024-09-28 05:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的类,有3个atributes Name和Birth year,当我定义这个类的一个对象时,我想要的不是出生年份而是人的年龄

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


Tags: nameselfdatedefyearfnamepersonbirth
2条回答

我想这就是你想做的:

>>> 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月”)

你想要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

相关问题 更多 >

    热门问题