python如何對例項屬性進行型別檢查

2022-10-04 20:09:16 字數 1291 閱讀 8826

案例:

在某專案中,我們實現了一些類,並希望能像靜態語言那樣對他們的例項屬性進行型別檢查

程式設計客棧    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和類...