子类中的加法
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加到这个方法上。那么问题出在哪里呢?
3 个回答
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的回答)。
1
在你的 __init__
循环里没有 self.age
这个变量。试试下面这个:
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
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
可以获取当前的日期。