当前位置: 首页 > news >正文

python语言day08 属性装饰器和property函数 异常关键字 约束

 属性装饰器:

   三个装饰器实现对私有化属性_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()
http://www.lryc.cn/news/427038.html

相关文章:

  • day01JS-数据类型-01
  • MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)
  • git的下载与安装(Windows)
  • 腾讯云AI代码助手 —— 编程新体验,智能编码新纪元
  • 使用 ESP32 和 TFT 屏幕显示实时天气信息 —— 基于 OpenWeatherMap API
  • 高阶数据结构——B树
  • Vue2中watch与Vue3中watch对比和踩坑
  • 在Java程序中执行Linux命令
  • 微信小程序在不同移动设备上的差异导致原因
  • 快速体验fastllm安装部署并支持AMD ROCm推理加速
  • 报错:java: javacTask: 源发行版 8 需要目标发行版 1.8
  • 【数据结构篇】~单链表(附源码)
  • 旋转图像(LeetCode)
  • 入门 - vue中v-model的实现原理和完整用法详解
  • 【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例
  • Nginx反向代理和前后端分离项目打包部署
  • Spring 中ApplicationContext
  • python之时间 datetime、date、time、timedelta、dateutil
  • 【机器学习第11章——特征选择与稀疏学习】
  • LeetCode-day43-3137. K 周期字符串需要的最少操作次数
  • 基于springboot的智能家居系统
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(七)
  • C:每日一练:单身狗(2.0版本)
  • 打破接口壁垒:适配器模式让系统无缝对接
  • U-Boot 命令使用
  • 谷歌的高级指令有哪些
  • Redis操作--RedisTemplate(一)介绍
  • GitLab环境搭建
  • Socket编程TCP 基础
  • JAVA中的Iterator与ListIterator