首先,我是python的新手,对c / c ++ / c#有基本的了解,这些都是静态类型的语言。那么可以在python中完成以下操作吗?
我希望变量birthday是一个日期时间。因此,每当我实例化时,我必须使用参数传递datetime。
import datetime
class Person:
"""class representing a person."""
def __init__(self, name, sirname, gender, birthday):
self.name = name
self.sirname = sirname
self.gender = gender
self.birthday = datetime.date(birthday)
def getage(self):
"""returns age"""
today = datetime.date.today()
return today.year - self.birthday.year
再往下我实例化如下
BIRTHDAY = datetime.date(1989, 10, 9)
NIELSON = Person('Nielson', 'Jansen', 'Male', BIRTHDAY)
这给了我错误: TypeError:需要一个整数(获取类型datetime.date)
是我的实例错误或者我应该从python中尽快得到以下内容?
self.birthday = datetime.date(birthday)
(为什么我想这样做是因为 getage 方法总是带有datetime.date而不是随机的东西,如果我犯了一个实例化的错误。)
PS:另外,如果我的术语不正确,请不要犹豫,纠正我。 :)答案 0 :(得分:0)
我假设你修好了
self.birthday = datetime.date(birthday)
到
self.birthday = birthday
现在,如果您想查看生日类型,可以写
assert isinstance(birthday, datetime.date)
在构造函数的开头。但这不是静态检查,因为只有在断言运行时才会执行检查。