class Artist:
def __init__(self, name, dob):
self.name = name
self.dob = dob
def get_name(self):
return self.name
def get_dob(self):
return self.dob
def age(self):
if get_date_today() < (2013, 12, 27):
return self.age
else:
return self.age + 1
def get_date_today():
return (2013, 10, 30) #'today'
hw = Artist("Hayley Williams", (1988, 12, 27))
print(hw.age()) # 24 if 'today' is < (2013, 12, 27), 25 if 'today' is >= (2013, 12, 27)
如何在else循环中添加。它无法在这里工作,因为我无法在方法中添加1。那有什么不对?
答案 0 :(得分:1)
您的self.age
循环中没有__init__
变量。试试这个:
class Artist:
def __init__(self, name, dob, age):
self.name = name
self.dob = dob
self.age = age
def get_name(self):
return self.name
def get_dob(self):
return self.dob
def get_age(self):
if get_date_today() < (2013, 12, 27):
return self.age
else:
return self.age + 1
答案 1 :(得分:1)
from datetime import datetime
class Artist:
def __init__(self, name, dob):
self.name = name
self.dob = dob
def get_name(self):
return self.name
def get_dob(self):
return self.dob
def age(self):
return ((datetime.today() - datetime(*self.dob)).days)/365
datetime
是python中用于执行日期实现操作的模块。 datetime.today
会返回您当前的日期。
答案 2 :(得分:0)
您正试图在方法age()
中返回您没有相关数据的年龄。决定从哪里获取数据并存储它,然后你可以在方法中返回它。
实现此目的的一种方法是在对象构造时获取数据:
def __init__(self, birthday):
self.birthday = birthday
# store also your other data like name and dob
然后你可以用它来计算年龄:
def age(self):
if get_date_today() < (2013, 12, 27):
return get_date_today() - self.birthday
else:
return get_date_today() - self.birthday + 1
# this assumes of course that you are using a date type which understands subtraction
但是还有其他方法可以从数据库中获取年龄,或者仅仅返回建设时的年龄(请参阅sshashank124及其答案)。