Maison  >  Article  >  développement back-end  >  Python implémente la vérification de type des attributs d'instance

Python implémente la vérification de type des attributs d'instance

小云云
小云云original
2018-03-29 14:13:001772parcourir

Cet article présente principalement en détail comment python effectue la vérification de type sur les attributs d'instance. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère qu'il pourra vous aider.

Cas :

Dans un certain projet, nous avons implémenté certaines classes et espérions effectuer une vérification de type sur leurs propriétés d'instance comme un langage statique

                                                                  p​ # Doit être int

                p.height = 1.75 # Doit être float

Exigences :

Vous pouvez spécifier un type par exemple le nom de la variable

🎜>

Donner un type incorrect génère une exception


Recommandations associées :

#!/usr/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(value, 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


Vérification du type JavaScript et interne propriétés [[Classe]]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn