0
点赞
收藏
分享

微信扫一扫

@property的应用


# -*- coding: utf-8 -*-


class People(object):
'''
给_name属性赋值,值必须是字符串,否则抛出异常
给age属性赋值,值必须是整数,否则抛出异常
'''
def __init__(self, a, b):
# 执行@name.setter装饰的name函数,在函数中给_name属性赋值
self.name = a
self.age = b

# 获取_name属性的值
@property
def name(self):
# 返回属性值时,也可以添加一些额外的功能
_name = self._name
# 把姓氏换成*
_name = _name.replace(_name[0:3],'*')
# 返回_name属性的值
return _name
# 设置_name属性的值
@name.setter
def name(self, value):
# 在赋值之前添加判断
if not isinstance(value, str):
# 抛出异常
raise TypeError('People object.name, name must be a str !')
# 设置_name属性值
self._name = value
# 还可以继续添加其他的功能
# 删除_name属性
@name.deleter
def name(self):
# 添加一些额外的功能
if not hasattr(self,'_name'):
raise AttributeError('People object has no attribute "_name"')
# 删除_name属性
del self._name


p1 = People('张三', 23)
# _name的属性值 必须是一个字符串。否则抛出异常
p1.name= '星星'

print(p1.name)

# 删除对象的_name属性
del p1.name


举报

相关推荐

0 条评论