描述符应用 -- 让python变成一个强类型的语言
生活随笔
收集整理的這篇文章主要介紹了
描述符应用 -- 让python变成一个强类型的语言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
眾所周知,python是一門弱類型的語言,變量可以隨意賦值成任意類型,但是通過描述符,我們可以把數據變成強類型的。
我們為數據設置數據描述符,因為數據描述的優先級大于實例屬性,所以在給數據賦值的時候會優先出發數據描述符。
?
普通版
class Typed:def __init__(self, name, expected_type):self.name = nameself.expected_type = expected_typedef __get__(self, instance, owner):if instance is None:return self # 如果實例化用People.name調用的話,就返回Typed的實例namereturn instance.__dict__[self.name]def __set__(self, instance, value):if not isinstance(value, self.expected_type):raise TypeError('Type error')instance.__dict__[self.name] = valuedef __delete__(self, instance):instance.__dict__.pop(self.name)class People:name = Typed('name', str)age = Typed('age', int)salary = Typed('salary', float)def __init__(self, name, age, salary):self.name = nameself.age = ageself.salary = salary# p1 = People(123, 18, 3333.3) # TypeError: Type error # p1=People('egon','18',3333.3) # TypeError: Type error # p1=People('egon',18,3333) # TypeError: Type error p1 = People('egon', 18, 3333.33) # 正確?
用類的裝飾器實現
先回顧一下setattr的語法
語法
setattr() 語法:
setattr(object, name, value)參數
- object -- 對象。
- name -- 字符串,對象屬性。
- value -- 屬性值。
?
轉載于:https://www.cnblogs.com/lshedward/p/10415731.html
總結
以上是生活随笔為你收集整理的描述符应用 -- 让python变成一个强类型的语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javag工程师成神之路(2019正式版
- 下一篇: dtoj#4178. 配对(pair)