Python 类型检查,定义一个函数,识别字符串是否符合Python语法的变量名

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: