Rumah  >  Soal Jawab  >  teks badan

python - ralat berlaku semasa menjalankan program

class Person(object):
    def __init__(self,name):
        self.name = name
class Teacher(Person):
    def __init__(self,score):
        self.__score = score
class Student(Teacher,Person):
    def __init__(self,name,score):
        Person.__init__(self,name)
        super(Student,self).__init__(score)
    @property
    def score(self):
        return self.__score
    @score.setter
    def score(self,score):
        if score<0 or score >100:
            raise ValueError('invalid score')
        self.__score = score
    def __str__(self):
        return 'Student:%s,%d' %(self.name,self.score)

s1 = Student('Jack',89)
s1.score = 95
print s1

Apabila menjalankan program ini, ia hanya boleh berjalan seperti biasa apabila skor adalah pembolehubah persendirian Adakah ia beberapa ciri harta itu, atau apa? Jika anda hanya menetapkannya kepada self.score = skor, ralat 'kedalaman rekursi maksimum melebihi semasa memanggil objek Python' akan muncul

过去多啦不再A梦过去多啦不再A梦2675 hari yang lalu726

membalas semua(1)saya akan balas

  • PHP中文网

    PHP中文网2017-06-22 11:54:35

    Sebab kekeliruan ini ialah anda tidak cukup kenal dengan penghias pengambil ular sawa dan penghias penetap

    Selepas anda mengisytiharkan penghias penetap untuk atribut skor, sebenarnya memberikan skor adalah untuk memanggil kaedah yang terikat oleh penghias penetap

    Jadi pembolehubah ahli yang ingin diakses oleh penetap anda tidak boleh mempunyai nama yang sama dengan kaedah penetap, jika tidak, ia akan bersamaan dengan lelaran yang tidak berkesudahan:

    self.score(self.score(self.score(self.score(self.score........ 无尽的迭代,
    

    Sudah tentu, ralat melebihi kedalaman lelaran maksimum akan dilaporkan

    balas
    0
  • Batalbalas