首先,我是Python新手,對c/C++/c#有基本的瞭解,這些都是靜態類型語言。那麼可以在Python中完成以下任務嗎?Python靜態類型的構造函數?
我希望變量生日是一個日期時間。所以,每當我實例化我必須通過參數傳遞一個日期時間。
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)
這給我的錯誤: 類型錯誤:需要一個整數(有型datetime.date)
是我的錯實例化或者我應該用python儘快獲得以下內容:
self.birthday = datetime.date(birthday)
(爲什麼我想這樣做是爲了讓getage方法始終呈現一個datetime.date,而不是隨機的東西,如果我做一個實例化的錯誤)
PS:還如果我的術語不正確,請毫不猶豫地糾正我。 :)
如果你已經傳入了'datetime',你爲什麼然後試圖將它轉換爲'datetime'?請參閱[文檔](https://docs.python.org/3/library/datetime.html#datetime.datetime) - 如果您傳遞一個參數,則預計會是一年。 – jonrsharpe
Python沒有靜態類型檢查。你看到*運行時*類型檢查,這是發生,因爲你正在傳遞一個錯誤類型的參數到'datetime.date' ... –