# Mostrar programa Python
# como chamar o descritor
def __ getattribute __ ( self , key): v = objeto .__ getattribute __ ( self , key)
if hasattr ( v, `__get__` ):
return cod e> v .__ get __ ( Nenhum , self )
return v
Pontos importantes a serem lembrados: - Os descritores são chamados pelo método
__getattribute __ () . - A substituição de
__getattribute__ () evita chamadas automáticas para o descritor. object .__ getattribute __ () e type .__ getattribute __ () várias chamadas para __get __ ( ) . - Os descritores de dados sempre substituem os dicionários de instância.
- Descritores que não são de dados podem ser substituídos por dicionários de instância.
Um exemplo de descritor: Neste exemplo, um descritor de dados normalmente configura e retorna valores ‚Äã‚Äãe imprime uma mensagem logando seu acesso. Código 1:
classe Descritor ( objeto ): def __ init __ ( self , nome = ` `):
self . nome = nome
def __ get __ ( self , obj, objtype): > return " {} para {} " . formato ( self .name, self . name)
def __ set __ ( self , obj, name):
if isinstance (name, str ):
self . nome = nome
else : raise TypeError ( " O nome deve ser string " )
class GFG ( objeto ):
nome = Descritor () g = GFG() g.name = "Geeks" imprimir (g.name) Sair: Python.Engineering Código 2:
< tbody> class Descritor ( objeto ):
def __ init __ ( self , nome = ` `):
self . nome = nome
def __ get __ ( self , obj, objtype): >
return "{} para {}" . formato ( self . nome, self . name)
def __ set __ ( self , obj, name ):
if isinstance ( name, str ):
self . name = name
else :
raise TypeError ( "Nome deve ser string" )
class GFG ( objeto ):
nome = Descritor ()
g = GFG()
g.name = "Computador"
print ( g.name)
Sair: ComputerforComputer Crie um identificador usando a propriedade ():
propriedade () , é fácil criar um descritor utilizável para qualquer atributo. Sintaxe para criar a propriedade property() (fget = Nenhum, fset = Nenhum, fdel = Nenhum, doc = Nenhum) < table border = "0" cellpadding = "0" cellspacing = "0"> | # Programa Python para explicar a propriedade ( ) function
# Classe do alfabeto
class Alfabeto:
def __ init __ ( self , valor):
self ._ value = valor
# obtendo valores ​​ def getValue ( se lf ):
print ( `Obtendo valor` )
return self ._ value
# valores de instalação ‚Äã‚Äã
def setValue ( self , valor):
print ( `Definindo valor para` + valor)
self ._ value = valor
# remo ve valores ​​
def delValue ( self ):
print ( `Excluindo valor` )
del self ._ value
valor = propriedade (getValue, setValue, delValue,) >
# passa o valor
x = Alfabeto ( `GeeksforGeeks` )
print (x.value)
x.value = `GfG`
del x.value
Sair: Obtendo valor Python.Engineering Configurando valor para GfG Excluindo valor Gerando um descritor usando métodos de classe: Nisto criamos Vamos pegar a classe e substituir qualquer um dos métodos do descritor __set__ , __ get__ e __delete__ . Este método é usado quando o mesmo descritor é necessário para muitas classes e atributos diferentes, por exemplo, para verificação de tipo.
class Descritor ( objeto ):
def __ init__ ( self , name = ` `):
self .name = nome
def __ get __ ( self , obj, objtype):
return " {} para {} " . formato ( self . nome, self . name)
def __ set __ ( self , obj, name ):
if isinstance (name, str ):
self . nome = nome
else :
raise TypeError ( "O nome deve ser string" )
class GFG ( object ):
nome = Descritor ()
g = GFG ( )
g.name = "Geeks" "
print (g.name)
Saída: Python.Engineering Crie um descritor usando @property Decorator: Neste usamos o poder dos decoradores de propriedade, que são uma combinação de um método de tipo de propriedade e decoradores Python.
classe Alfabeto: def __ init __ ( self , valor):
self ._ valor = valor
# recuperando valores ​​
@ property
def valor ( self ): print ( `Obtendo valor` )
return self ._ valor # valores de configuração ‚Äã‚Äã
@ value . setter
def valor ( self , value ):
print ( `Definindo valor para ` + valor)
self ._ value = valor
# remove valores ​​
@ value .deleter def valor ( self ):
imprimir ( `Excluindo valor` ) del self ._ value
# passe o valor
x = Alfabeto ( `Pedro` ) print (x.value)
x.value = `Diesel`
del x.value
Sair: Obtendo valor Peter Configurando valor para Diesel Excluindo valor
Shop
Learn programming in R: courses $
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 $
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
| | | | |