案例:
在某專案中,我們實現了一些類,並希望能像靜態語言那樣對他們的例項屬性進行型別檢查
程式設計客棧 p = person()
p.name = 『xi_xi' wxuvgrn; # 必須是str
p.age = 18 # 必須是int
p.height = 1.75 # 必須是float
需求:可以對例項變數名指定型別
賦予不正確型別丟擲異常
#!/uswxuvgrnr/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]
# 設值
def __set__(self, instance, value):
# 判斷引數型別是否滿足條件
if isinstance(vwww.cppcns.comalue, 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
本文標題: python如何對例項屬性進行型別檢查
本文位址:
如何對多個屬性進行transform
w3school對transform的介紹很簡單 transform none transform functions transform的預設值是none 其所舉的例子也只是對乙個值進行過渡,其實還可以對多個值同時進行過渡,寫法如下 transform transform functions tr...
如何對python的字典進行排序
我們知道python的內建dictionary資料型別是無序的,通過key來獲取對應的value。可是有時我們需要對dictionary中 的item進行排序輸出,可能根據key,也可能根據value來排。到底有多少種方法可以實現對dictionary的內容進行排序輸出呢?下面摘取了 一些精彩的解決...
Python類屬性,例項屬性
dreamfor的部落格 1.python類資料屬性 定義在類裡面但在函式外面的變數,它們都是靜態的。一段很簡單的 但反應了很多 class a a 1 乙個類裡面有個屬性a a a b a a.a b.a a.a 這個屬效能被例項和類訪問 a.a 2 b.a a.a 改變例項a的屬性a,例項b和類...