如何实现Python中的descriptor(描述符)机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5331个文字,预计阅读时间需要22分钟。
问题+问题1+Python是一种动态语言,不支持类型检查。当需要对一个对象执行类型检查时,可能会采用以下方式:pythonclass Foo(object): def __init__(self, a): if isinstance(a, int): self.__a=a else: raise TypeError
问题
问题1
Python是一种动态语言,不支持类型检查。当需要对一个对象执行类型检查时,可能会采用下面的方式:
class Foo(object): def __init__(self,a): if isinstance(a,int): self.__a = a else: raise TypeError("Must be an int") def set_a(self,val): if isinstance(val,int): self.__a = val else: raise TypeError("Must be an int") def get_a(self): return self.__a
上述是一种类型检查的方法,但是如果需要类型检查的参数非常多的话就会变得非常繁琐,重复代码太多,Python这么简洁,优雅,肯定有更好的解决方法。另外上述方法也有缺陷。
本文共计5331个文字,预计阅读时间需要22分钟。
问题+问题1+Python是一种动态语言,不支持类型检查。当需要对一个对象执行类型检查时,可能会采用以下方式:pythonclass Foo(object): def __init__(self, a): if isinstance(a, int): self.__a=a else: raise TypeError
问题
问题1
Python是一种动态语言,不支持类型检查。当需要对一个对象执行类型检查时,可能会采用下面的方式:
class Foo(object): def __init__(self,a): if isinstance(a,int): self.__a = a else: raise TypeError("Must be an int") def set_a(self,val): if isinstance(val,int): self.__a = val else: raise TypeError("Must be an int") def get_a(self): return self.__a
上述是一种类型检查的方法,但是如果需要类型检查的参数非常多的话就会变得非常繁琐,重复代码太多,Python这么简洁,优雅,肯定有更好的解决方法。另外上述方法也有缺陷。

