关于高级特性问题
class set(object):
def __init__(self,name,age):
self.name = name
self.__age = age
@property
def aaa(self):
return self.__age
@aaa.setter
def aaa(self,va):
if not isinstance(va,int):
print("只能是整数")
return 0
if va < 0 or va > 100:
print("不能是超出范围之外(0-100)!")
return 0
self.__age = va
@property
def eat(self):
return '你好{},今年{}岁'.format(self.name,self.aaa)
def __str__(self):
return self.eat
if __name__ == "__main__":
boot = set('小明',5)
shool = boot.eat
print(shool)
print(boot)
boot.aaa= 8
shool = boot.eat
print(shool)
老师@aaa.setter这一个,是什么意思呢?
正在回答
同学,你好。@property可以将定义的方法“当做”属性访问,当属性设置为私有属性时,在外部不可以直接修改,因此可以同时使用@property和@*.setter,从而可以修改私有属性的值。
可以理解为:只有@property表示只读。同时有@property和@*.setter表示可读可写。
例:
class Person(object): @property def age(self): return self._height @age.setter def age(self, value): if not isinstance(value, int): raise ValueError("年龄只能是整数") if value < 0 or value > 100: raise ValueError("年龄只能介于0-100之间") self._height = value d = Person() d.age = 26 print(d.age) # 26
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星