pyhton编程 ---property装饰器


类的一个特性就是封装,能够把一些东西隐藏起来,不让外部直接访问,可以通过属性装饰器来对外提供方法。
getter:读取属性
setter:设置属性
deleter:删除属性

property类

class property(fget=None, fset=None, fdel=None, doc=None)
	return a property attribute
属性装饰器用法一
class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self): #等价于name = property(name)
        return self._name

    @name.setter    #等价于name = name.setter(name)
    def name(self, value):
        self._name = value

    @name.deleter  #等价于name = name.deleter(name)
    def name(self):
        # del self._name
        print('del name')


tom = Person('Tom')
print(tom.name) #自动使用getter方法
tom.name = 'Jerry' #自动使用setter方法
print(tom.name)
print(tom.__dict__)

property装饰器
这个装饰器必须包含,被它装饰的函数名就是它的属性名,只有property装饰器时就是只读属性,会调用getter方法。

setter装饰器
与属性名同名,接收两个形参,一个是self一个是修改属性时添加的值。有了setter装饰器,属性就可以写。

deleter装饰器
一般比较少使用,用于删除属性

属性装饰器通过简单的方式,把对方法的操作变成对属性的访问,并且能够起到一定的隐藏效果

属性装饰器用法二
class Person:
    def __init__(self, name, age=18):
        self._name = name
        self._age = age

    def get_properties(self):
        return 'name: {}, age: {}'.format(self._name, self._age)


    def set_properties(self, value):
        self._name = value

    def del_properties(self):
        del self._name


    propertites = property(get_properties, set_properties, del_properties)

tom = Person('TOM', 21)
print(tom.propertites)
tom.propertites = 'jerry'
print(tom.propertites)
del tom.propertites
print(tom.__dict__)

这种方式和上面的实现方法不一样,但是调用方式是一样的,因此这两种方法其实没有本质区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值