属性装饰器:
三个装饰器实现对私有化属性_creat_time的get,set,del方法;
三个装饰器下的方法名都一样,通过message.creat_time的不同操作实现调用get,set,del方法。
__inti__:
创建并私有化一个属性_creat_time
class Message:def __init__(self):self._creat_time = datetime.datetime.now() # 初始化一个创建时间
@property:
创建一个属性名,就是方法名creat_time
对应的值就是return的值。
类比java,就是springBoot框架的@Bean注解
@propertydef creat_time(self):return self._creat_time # 返回存储的时间 # 测试代码 message = Message() print("初始创建时间:", message.creat_time)
@creat_time.setter
@creat_time.setterdef creat_time(self, value):self._creat_time = value # 设置新的创建时间 # 设置新的创建时间 message.creat_time = datetime.datetime.now() + datetime.timedelta(days=1) print("更新后的创建时间:", message.creat_time)
@creat_time.deleter:
@creat_time.deleterdef creat_time(self):del self._creat_time#删除属性值 del message.creat_timeif getattr(message, "_creat_time", None) is not None:print(message.creat_time)
import datetimeclass Message:def __init__(self):self._creat_time = datetime.datetime.now() # 初始化一个创建时间@propertydef creat_time(self):return self._creat_time # 返回存储的时间@creat_time.setterdef creat_time(self, value):self._creat_time = value # 设置新的创建时间@creat_time.deleterdef creat_time(self):del self._creat_time # 删除存储的时间# 测试代码 message = Message() print("初始创建时间:", message.creat_time)# 设置新的创建时间 message.creat_time = datetime.datetime.now() + datetime.timedelta(days=1) print("更新后的创建时间:", message.creat_time)
property函数:
私有化_name属性,对外提供name属性的调用
import datetimeclass Message:def __init__(self,name):self._name = namedef get_name(self):return self._namedef set_name(self,name):self._name = namedef del_name(self):del self._namename = property(get_name,set_name,del_name)obj = Message(22) print(obj.name) obj.name = 11 print(obj.name) del obj.name print(getattr(obj,'name',None))
异常:
try:
尝试捕获异常
except:
捕获对应类型异常
as:
类似sql语句的as,给异常对象起个名字
raise:
创建一个异常对象
try:data_list = [1,2,1,2]print(data_list[1000]) except IndexError as e:raise Exception("错误")print(e) #不会输出 except Exception as e:print(e) finally:print("abc") #最后输出
约束:
就是接口,python中的接口是在继承的基础上实现的,并且可以多继承
from abc import abstractmethod class Animal:def eat(self):raise NotImplementedError()@abstractmethoddef run(self):passclass Dog(Animal):def eat(self):print("开吃")def run(self):print("跑啊") dog = Dog() dog.run() dog.eat()