Heim  >  Artikel  >  Backend-Entwicklung  >  Python implementiert die Typprüfung von Instanzattributen

Python implementiert die Typprüfung von Instanzattributen

小云云
小云云Original
2018-03-29 14:13:001720Durchsuche

Dieser Artikel stellt hauptsächlich detailliert vor, wie Python die Typprüfung für Instanzattribute durchführt. Ich hoffe, dass er Ihnen weiterhelfen kann.

Fall:

In einem bestimmten Projekt haben wir einige Klassen implementiert und hofften, eine Typprüfung für ihre Instanzeigenschaften wie eine statische Sprache durchzuführen

                                                              S​ # Muss int sein

                 p.height = 1.75 # Muss float sein

Anforderungen:

Sie können einen Typ für den Instanzvariablennamen Die Angabe eines falschen Typs löst eine Ausnahme aus

Verwandte Empfehlungen:


#!/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
JavaScript-Typprüfung und intern Eigenschaften [[Klasse]]


Das obige ist der detaillierte Inhalt vonPython implementiert die Typprüfung von Instanzattributen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn