# Afficher le programme Python
# comment appeler le descripteur
def __ getattribute __ ( soi , clé) : v = objet .__ getattribute __ ( soi , clé)
si hasattr ( v, `__get__` ) :
return cod e> v .__ get __ ( Aucun , self )
return v
Points importants à retenir : - Les descripteurs sont appelés par la méthode
__getattribute __ () . - Remplacer
__getattribute__ () empêche les appels automatiques au descripteur. object .__ getattribute __ () et type .__ getattribute __ () divers appels à __get __ ( ) . - Les descripteurs de données remplacent toujours les dictionnaires d`instance.
- Les descripteurs non-données peuvent être remplacés par des dictionnaires d`instance.
Un exemple de descripteur : Dans cet exemple, un descripteur de données définit et renvoie généralement des valeurs ‚Äã‚Äãet imprime un message enregistrant leur accès. Code 1 :
classe Descripteur ( objet ) : def __ init __ ( soi , nom = ` `) :
soi . nom = nom
def __ obtenir __ ( soi , obj, objtype) : return " {} for {} " . format ( self .name, soi . name)
def __ set __ ( self , obj, name) :
si isinstance (nom, str ) :
soi . nom = nom
autre : raise TypeError ( " Le nom doit être une chaîne " )
class GFG ( objet ) :
nom = Descripteur () g = GFG () g.name = "Geeks" print (g.name) Quitter : Python.Engineering Code 2 :
< tbody> class Descriptor ( objet ) :
def __ init __ ( self , name = ` `):
self . nom = nom
def __ obtenir __ ( soi , obj, objtype) :
return "{} for {}" . format ( self . nom, soi . nom)
def __ set __ ( self , obj, nom ) :
si estinstance ( nom, str ) :
soi . name = name
else :
raise TypeError ( "Le nom doit être une chaîne" )
classe GFG ( objet ) :
nom = Descripteur ()
g = GFG ()
g.name = "Ordinateur"
print ( g.name)
Quitter : OrdinateurpourOrdinateur Créer un handle en utilisant la propriété () :
propriété () , il est facile de créer un descripteur utilisable pour n`importe quel attribut. Syntaxe de création de la propriété property() (fget = None, fset = None, fdel = None, doc = None) < table border = "0" cellpadding = "0" cellspacing = "0"> | # Programme Python pour expliquer la propriété ( ) fonction
# Classe alphabétique
classe Alphabet :
def __ init __ ( soi , valeur) :
soi ._ valeur = valeur
# obtenir des valeurs ​​ def getValue ( se lf ) :
imprimer ( `Obtenir la valeur` )
return self ._ value
# valeurs d`installation ​​
def setValue ( self , value):
print ( `Définir la valeur sur` + valeur)
soi ._ valeur = valeur
# remo cinq valeurs ​​
def delValue ( soi ) :
imprimer ( `Suppression de la valeur` )
del soi ._ valeur
valeur = propriété (getValue, setValue, delValue,)
# transmettez la valeur
x = Alphabet ( `GeeksforGeeks` )
print (x.value)
x.value = `GfG`
del x.value
Quitter : Obtenir la valeur Python.Engineering Définir la valeur sur GfG Supprimer la valeur Génération d`un descripteur à l`aide de méthodes de classe : Dans ce cas, nous avons créé Obtenons la classe et remplaçons l`une des méthodes de descripteur __set__ , __ get__ et __delete__ . Cette méthode est utilisée lorsque le même descripteur est requis pour plusieurs classes et attributs différents, par exemple, pour la vérification de type.
classe Descripteur ( objet ) :
def __ init__ ( soi , nom = ` `) :
self .name = nom
def __ get __ ( self , obj, objtype) :
return " {} pour {} " . format ( self . nom, soi . nom)
def __ set __ ( self , obj, nom ) :
si estinstance (nom, str ) :
soi . nom = nom
autre :
augmenter TypeError ( "Le nom doit être une chaîne" )
classe GFG ( objet ):
nom = Descripteur ()
g = GFG ( )
g.name = "Geeks "
imprimer (g.name)
Sortie : Python.Engineering Créez un descripteur à l`aide de @property Decorator : Dans ce nous utilisons la puissance des décorateurs de propriété, qui sont une combinaison d`une méthode de type de propriété et de décorateurs Python.
classe Alphabet : def __ init __ ( self , valeur) :
self ._ valeur = valeur
# en récupérant les valeurs ‚Äã‚Äã
@ property
def value ( self ):
print ( `Obtenir la valeur` )
return self ._ valeur # valeurs de réglage ‚Äã‚Äã
@ value . setter
def value ( self , value ):
print ( `Définir la valeur sur ` + valeur)
self ._ value = value
# supprimer les valeurs ​​
@ value .deleter def value ( soi ) :
imprimer ( `Suppression de la valeur` ) del soi ._ valeur
# passer la valeur
x = Alphabet ( `Pierre` ) imprimer (x.value)
x.value = `Diesel`
del x.value
Quitter : Obtention de la valeur Peter Réglage de la valeur sur Diesel Suppression de la valeur
Descripteur en Python __del__: Questions
Descripteur en Python __delete__: Questions
Shop
Best Python online courses for 2022 $
Best laptop for Fortnite $
Best laptop for Excel $
Best laptop for Solidworks $
Best laptop for Roblox $
Best computer for crypto mining $
Best laptop for Sims 4 $
Best laptop for Zoom $499
Latest questions
NUMPYNUMPY
psycopg2: insert multiple rows with one query
12 answers
NUMPYNUMPY
How to convert Nonetype to int or string?
12 answers
NUMPYNUMPY
How to specify multiple return types using type-hints
12 answers
NUMPYNUMPY
Javascript Error: IPython is not defined in JupyterLab
12 answers
Wiki
Python OpenCV | cv2.putText () method
numpy.arctan2 () in Python
Python | os.path.realpath () method
Python OpenCV | cv2.circle () method
Python OpenCV cv2.cvtColor () method
Python - Move item to the end of the list
time.perf_counter () function in Python
Check if one list is a subset of another in Python
Python os.path.join () method
| | | | |