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
联系客服