python如何對實例屬性進行類型檢查
本文實例為大家分享了python對實例屬性進行類型檢查的具體代碼,供大家參考,具體內(nèi)容如下
案例:
在某項目中,我們實現(xiàn)了一些類,并希望能像靜態(tài)語言那樣對他們的實例屬性進行類型檢查
p = Person()
p.name = ‘xi_xi' # 必須是str
p.age = 18 # 必須是int
p.height = 1.75 # 必須是float
需求:
可以對實例變量名指定類型
賦予不正確類型拋出異常
#!/usr/bin/python3
class Attr(object):
"""
對Person類中屬性進行類型檢查
"""
# 傳入字段名字 + 指定字段類型
def __init__(self, name, style):
self.name = name
self.style = style
# 取值
def __get__(self, instance, owner):
return instance.__dict__[self.name]
# 設(shè)值
def __set__(self, instance, value):
# 判斷參數(shù)類型是否滿足條件
if isinstance(value, self.style):
instance.__dict__[self.name] = value
else:
raise TypeError('need type: %s' % self.style)
# 刪除值
def __delete__(self, instance):
del instance.__dict__[self.name]
class Person(object):
name = Attr('name', str)
age = Attr('age', int)
height = Attr('height', float)
if __name__ == '__main__':
p = Person()
p.name = 'xi_xi'
# p.name = 55
p.age = 18
p.height = 1.75
print(p.name, p.age, p.height)
del p.height
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)(續(xù))
這篇文章主要詳細介紹了python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)DNN,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Python利用xmltodict實現(xiàn)字典和xml互相轉(zhuǎn)換的示例代碼
xmltodict是一個Python第三方庫,用于處理XML數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
20個Python?random模塊常用函數(shù)的應(yīng)用與代碼示例
隨機數(shù)在計算機科學(xué)和數(shù)據(jù)科學(xué)領(lǐng)域中扮演著重要角色,Python的標(biāo)準(zhǔn)庫中提供了random模塊,用于生成各種隨機數(shù),本文將深入探討random模塊的各種函數(shù),以及它們的應(yīng)用場景和代碼示例,需要的可以參考下2024-03-03

