1.加入property以后,这个方法变成了属性

  1. class F(object):
  2. def __init__(self,name):
  3. self.name = name
  4. @property
  5. def fname(self): # 注意这里不能加入其他参数
  6. print('你的名字是{}'.format(self.name))
  7. return self.name
  8. obj1 = F('侯震宇')
  9. print(obj1.name)

2.@x.setter 和 @x.deleter两种装饰器

  1. class F(object):
  2. def __init__(self, name):
  3. self.name = name
  4. @property
  5. def Color(self): # 注意这里不能加入其他参数
  6. print('颜色是{}'.format(self.color))
  7. return self.color
  8. @Color.setter
  9. def Color(self,color):
  10. self.color = color
  11. @Color.deleter
  12. def Color(self):
  13. del self.color
  14. """这里要注意:@property @x.setter @x.deleter
  15. 这三个东西 后面的出现时,必须得先出现前面的才行
  16. 名称是可以连续使用的
  17. """
  18. obj1 = F('侯震宇')
  19. obj1.Color = '黄色'
  20. del obj1.Color

还有一种等价表示方法:

  1. class F(object):
  2. def __init__(self, name):
  3. self.name = name
  4. def getColor(self): # 注意这里不能加入其他参数
  5. print('颜色是{}'.format(self.color))
  6. return self.color
  7. def setColor(self,color):
  8. self.color = color
  9. def delColor(self):
  10. del self.color
  11. Color = property(getColor,setColor,delColor)
  12. """这里要注意:@property @x.setter @x.deleter
  13. 这三个东西 后面的出现时,必须得先出现前面的才行
  14. 名称是可以连续使用的
  15. """
  16. obj1 = F('侯震宇')
  17. obj1.Color = '黄色'
  18. del obj1.Color

注意:属性和实例变量调用的方式相同,所以很容易重名一定要避免重名,如果真的名称类似,可以在实例变量名称前面加下划线.