Heim  >  Fragen und Antworten  >  Hauptteil

[Python-Neuling] Fragen zur Reihenfolge der Eigenschaften stellen

Der Code lautet wie folgt:

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)

Laufergebnis:

Im Code steht für den Eigenschaftsteil get vorne und set hinten, und das Ausführungsergebnis ist normal. Wenn Sie dann das Set vorne platzieren und hinten einsteigen, geht das Programm schief.

Ich würde gerne fragen, warum das etwas mit dem Standort zu tun hat? Wird es vom Programm nicht automatisch erkannt? Warum ist es falsch, die Position zu ändern?

仅有的幸福仅有的幸福2662 Tage vor751

Antworte allen(1)Ich werde antworten

  • 伊谢尔伦

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

    我试了一下,错误信息是:
    TypeError: getNum() takes 1 positional argument but 2 were given

    getter接收一个参数,setter接收两个参数,互换了传入的参数个数就不匹配了。

    这个定义里是有顺序的:
    class property(fget=None, fset=None, fdel=None, doc=None)

    Antwort
    0
  • StornierenAntwort