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 ?
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)