重复使用名称、年龄和程序变量会导致setter调用自己。
我试图用@property创建一个类,但我一直遇到递归错误,不知道为什么。
class residente:
def __init__(self, name, age, program):
self.name = name
self.age = age
self.program = program
print(self.name, "is a student living in City", self.age, "years old", "and studying a", self.program, ".")
@property
def name(self):
return self.name
@name.setter
def name(self, name):
self.name = name
@name.deleter
def name(self):
del self.name
@property
def age(self):
return self.age
@age.setter
def age(self, age):
self.age = age
@age.deleter
def age(self):
del self.age
@property
def program(self):
return self.program
@program.setter
def program(self, program):
self.program = program
@program.deleter
def program(self):
del self.program
Bernardo = residente("Bernardo", "23", "Medicine in English")
我一直得到以下错误
输出:
class residents:
# self.name = name
# self.age = age
# self.program = program
#
# results in the setter calling itself
#
# Changed to
# self._name = name
# self._age = age
# self._program = program
def __init__(self, name, age, program):
self._name = name
self._age = age
self._program = program
print(self.name, "is a student living in City", self.age, "years old",
"and studying a", self.program, ".")
@property
def name(self):
return self._name
@name.setter
def name(self, name):
self.name = _name
@name.deleter
def name(self):
del self._name
@property
def age(self):
return self._age
@age.setter
def age(self, age):
self.age = _age
@age.deleter
def age(self):
del self._age
@property
def program(self):
return self._program
@program.setter
def program(self, program):
self.program = program
@program.deleter
def program(self):
del self.program
Bernardo = residente("Bernardo", "23", "Medicine in English")
结果:
Bernardo is a student living in City 23 years old and studying a Medicine in English .