Python 类型检查,定义一个函数,识别字符串是否符合Python语法的变量名
本文主要介绍Python使用描述符实现属性类型检查。实例属性是用一个类中另一个类的实例作为那个类的数字属性。本文通过代码演示非常详细的介绍给大家,有需要的朋友可以参考一下。
00-1010 1.如何使用描述符检查实例属性的类型?实际案例:解法:2。代码演示。
目录
1、如何使用描述符对实例属性做类型检查?
在一个项目中,我们实现了一些类,我们希望像静态类型语言(C,C,Java)一样对它们的实例属性进行类型检查。
p=人()
p . name= Bob # name属性必须是str。
P.age=18 #年龄必须是整数
P.height=1.83#高度必须是float。
要求:(1)你可以指定实例变量名的类型。
(2)当给出不正确的类型时,抛出异常。
实际案例:
使用描述符实现需要类型检查的属性:分别实现__get__、__set__、__delete__方法,在__set_中使用isinstance函数做类型检查。
拓展:静态类型语言变量只能引用某一类型的对象,不能改变。类型检查是由编译器在编译阶段完成的。对于Python动态类型语言,一个变量可以引用任意类型的对象,可以实时变化,也就是解释器不能做类型检查,只能自己做。
什么是描述符?描述符是包含__get__、__set__和__delete_等方法的类。只要包含这三种方法中的一种,它就是一个描述符。
实例是一个类中另一个类的实例,作为该类的数字属性。
解决方案:
(1)描述符定义和访问过程介绍
类描述符(对象):
def __get__(self,instance,cls):
# instance用于区分使用类访问X还是使用实例访问X。
print(in __get__ ,实例,cls)
返回实例。__dict__[x]
def __set__(自身,实例,值):
#检查集合中的类型
打印(在__套_ _中)
实例。__dict__[x]=值
def __delete__(自身,实例):
打印( in __del__ )
A类(对象):
#在类中定义一个类属性X
x=描述符()
a=A()
#将被描述符的__get__方法截获
打印(传真)
#使用类A直接访问类属性,实例将被传入None。
打印(传真)
#将被描述符的__set__方法截获
a.x=5
#将被描述符的__del__方法截获
德尔阿克斯
一般来说,字典实例。__dict__在描述符的这些方法中被访问,
也就是对其真实属性进行操作。
a=A()
a.x=5
打印(a. __字典_ _)
(2)利用描述符实现实例属性类型检查。
类别属性(对象):
def __init__(self,name,type_):
self.name=name
self.type_=type_
def __get__(self,instance,cls):
返回实例。__dict__[self.name]
def __set__(自身,实例,值):
#测试字段类型。
如果不是isinstance(value,self.type_):
引发TypeError(应为%s % self.type_)
实例。__dict__[self.name]=value
def __delete__(自身,实例):
删除实例。__dict__[self.name]
类人(对象):
#定义名称字段以应用于描述符实例。
name=Attr(name ,str)
age=Attr(age ,int)
height=Attr(高度,浮点型)
p=人()
鲍勃。
打印(姓名)
# age赋值字符串类型引发异常。
# p.age=17
关于使用描述符检查python的属性类型的文章到此结束。关于Python属性类型检查的更多信息,请搜索热门IT软件开发工作室之前的文章,或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。