Maison  >  Questions et réponses  >  le corps du texte

[Python Newbie] Poser des questions sur l'ordre des propriétés

Le code est le suivant :

class Test(object):
    def __init__(self):
        self.__num = 100
        
    def setNum(self,newNum):
        print("----setter-----")
        self.__num = newNum
    
    def getNum(self):
        print("----getter-----")
        return self.__num
    
    num = property(getNum,setNum)  #get在前,set在后
    #num = property(setNum,getNum)  #set在前,get在后
    
t = Test()
print(t.getNum())
t.setNum(2000)
print(t.getNum())

print("----"*10)

t.num = 5000
print(t.num)

Résultat de l'exécution :

Dans le code, pour la partie propriété, get est devant et set est derrière, et le résultat de l'exécution est normal. Ensuite, si vous placez l'ensemble devant et placez-vous derrière, le programme tournera mal.

Je voudrais demander, pourquoi cela a-t-il quelque chose à voir avec l'emplacement ? N'est-il pas automatiquement reconnu par le programme ? Pourquoi est-il mal de changer de position ?

仅有的幸福仅有的幸福2662 Il y a quelques jours754

répondre à tous(1)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:37:06

    Je l'ai essayé, le message d'erreur est :
    TypeError : getNum() prend 1 argument de position mais 2 ont été donnés

    Le getter reçoit un paramètre et le setter reçoit deux paramètres. Si le nombre de paramètres transmis est échangé, ils ne correspondront pas.

    Il y a un ordre dans cette définition :
    class property(fget=None, fset=None, fdel=None, doc=None)

    répondre
    0
  • Annulerrépondre