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注解

@property
    def creat_time(self):
        return self._creat_time  # 返回存储的时间
# 测试代码
message = Message()
print("初始创建时间:", message.creat_time)

        @creat_time.setter

@creat_time.setter
    def 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.deleter
    def creat_time(self):
        del self._creat_time
  #删除属性值  
  del message.creat_time
    if getattr(message, "_creat_time", None) is not None:
        print(message.creat_time)
import datetime

class Message:
    def __init__(self):
        self._creat_time = datetime.datetime.now()  # 初始化一个创建时间

    @property
    def creat_time(self):
        return self._creat_time  # 返回存储的时间

    @creat_time.setter
    def creat_time(self, value):
        self._creat_time = value  # 设置新的创建时间

    @creat_time.deleter
    def 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 datetime

class Message:
    def __init__(self,name):
        self._name = name

    def get_name(self):
        return self._name
    def set_name(self,name):
        self._name = name
    def del_name(self):
        del self._name
    name = 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()
    @abstractmethod
    def run(self):
        pass

class Dog(Animal):
    def eat(self):
        print("开吃")
    def run(self):
        print("跑啊")
dog = Dog()
dog.run()
dog.eat()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值