打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python 类属性装饰器

property装饰器:

后面跟的函数名就是以后的属性,它即是getter,这个必须有,只读属性

setter装饰器:

于属性名同名,接收两个参数,第一个是self,第二个是将要赋值的值,将属性变为可写

deleter装饰器:

可以控制属性是否删除

property装饰器必须在前,setter,deleter在后

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

class Person:    def __init__(self, name, age=18):        self.name = name        self._age = age    def getage(self):        return self._age    def setage(self, age):        self._age = agetom=Person('tom')print(tom.getage())tom.setage(88)print(tom.getage())

class Person:    def __init__(self,name,age=18):        self.name=name        self.__age=age    def getage(self):        return self.__age    def setage(self,value):        self.__age=valuebiz=Person('biz')print(biz.getage())biz.setage(99)print(biz.getage())

# import re# p='''bottle\r\nbag\r\nbig\napple'''## regex=re.compile('(b\w )')# # b=regex.match(p)# # print(b.groups(),b.group(),p[b.start():b.end()])# # b=regex.search(p,1)# # print(b.groups())# regex=re.compile(r'(b\w )\r\n(?P<name1>b\w )\r\n(?P<name2>b\w )')# # b=regex.match(p)# # print(b)# # print(b.groups(),b.group(0),b.group(1),b.group(2),b.group(3))# # print(b.groupdict())# # print(b.groupdict()['name1'])# # print(b.groupdict()['name2'])# # b=regex.findall(p)# # print(b)# # for m in b[0]:# #     print(type(m),m)# regex=re.compile('(?P<head>b\w )')# b=regex.finditer(p)# for m in b:#     print(type(m),m,m.group(),m.group('head'),m.groupdict()['head'])## s='''os.path([path])  sub-path'''# print(re.split('[^-\w] ',s))class Person:    def __init__(self,name,age=18):        self.name=name        self.__age=age    @property    def age(self):        return self.__age    @age.setter    def age(self,value):        self.__age=value    @age.deleter    def age(self):        del self.__agebiz=Person('biz')print(biz.age)biz.age=89print(biz.age)print(biz.__dict__)print(dir(biz))del biz.ageprint(biz.__dict__)print(dir(biz))

  #### Notice:这三个方法同名

class Person:    def __init__(self,name,age=18):        self.name=name        self.__age=age    def getage(self):        return self.__age    def setage(self,value):        self.__age=value    def delage(self):        del self.__age    age=property(getage,setage,delage)ciz=Person('ciz')print(ciz.age)ciz.age=77print(ciz.age)del ciz.ageprint(ciz.__dict__)
class Person:    def __init__(self,name,age=18):        self.name=name        self.__age=age        age=property(lambda self:self.__age)
class Biv:    def __init__(self,chinese,english,history):        self._c=chinese        self._e=english        self.__h=history    def geth(self):        return self.__h    def seth(self,value):        self.__h=value    def gete(self):        return self._e    @property    def chinese(self):        return self._c    @chinese.setter    def chinese(self,value):        self._c=value    @chinese.deleter    def chinese(self):        del self._c    # hh=property(geth,seth)    hh=property(lambda self:self.__h,lambda self,value:exec("self._Biv__h=value"))    print(type(hh), hh)p=Biv(4,5,6)p.hh=444print(type(p.hh),p.hh)# print(p.geth())# p.seth(88)# print(p.geth())# print(p.chinese)# p._c=999# print(p.chinese)# p.chinese=888# print(p.chinese)print(p.chinese)# del p.chinese# del p._cprint(p.chinese)
来源:https://www.icode9.com/content-1-741301.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python实现学生信息管理系统(从浅到深)
python self、类、构造和析构方法 简单学习
10. 类与对象
python函数的私有属性 方法
Python学习教程:面向对象学习实力讲解
Python申明参数,提高代码可读性
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服