我正在尝试使用来自同一属性的方法设置一个类,这些方法可以使用 @property 而不是函数属性以相同的名称调用



我试图用@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")

我一直得到以下错误

输出:

重复使用名称、年龄和程序变量会导致setter调用自己。
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 .

最新更新