Python静态类型构造函数?

时间:2017-10-19 19:34:54

标签: python datetime constructor

首先,我是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:另外,如果我的术语不正确,请不要犹豫,纠正我。 :)

1 个答案:

答案 0 :(得分:0)

我假设你修好了

self.birthday = datetime.date(birthday)

self.birthday = birthday

suggested by jonrsharpe

现在,如果您想查看生日类型,可以写

assert isinstance(birthday, datetime.date)

在构造函数的开头。但这不是静态检查,因为只有在断言运行时才会执行检查。