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 = age tom=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=value biz=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.__age biz=Person('biz') print(biz.age) biz.age=89 print(biz.age) print(biz.__dict__) print(dir(biz)) del biz.age print(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=77 print(ciz.age) del ciz.age print(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=444 print(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._c print(p.chinese)来源:https://www./content-1-741301.html |
|