首页 > 编程语言 >python @property、@setter、@deleter的介绍与使用

python @property、@setter、@deleter的介绍与使用

时间:2023-06-07 18:24:29浏览次数:46  
标签:last name python self print fullname property zhangsan deleter

@property是一个装饰器,使一个方法可以像属性一样被使用,而不需要在调用的时候带上()

0x01 @property使用

我们通过一个简单的研发需求为背景,逐步解释各个装饰器的使用

这里领导给了个需求,开发一个类,可以返回一个人的姓,名字以及全名,十分简单嘛

class Person():

    def __init__(self, firstname, lastname):
        self.first_name = firstname
        self.last_name = lastname
        self.fullname = self.first_name + ' '+ self.last_name

zhangsan = Person("zhang", "san")

print(zhangsan.first_name) # zhang

print(zhangsan.last_name) # san

print(zhangsan.fullname) # zhang san

下班!

上线之后,各下游都已经开始调用该接口,突然有一天发现用户改了下last_name,但是fullname没有变:

zhangsan.last_name = "si"

print(zhangsan.last_name) # si

print(zhangsan.fullname) # zhang san

领导说,不行你得改!

我这一想简单啊,写个fullname的方法,每次调用属性不就行了,于是就改成这样:

class Person():

    def __init__(self, firstname, lastname):
        self.first_name = firstname
        self.last_name = lastname

    def fullname(self):
            self.fullname = self.first_name + ' '+ self.last_name

zhangsan = Person("zhang", "san")

zhangsan.last_name = "si"

print(zhangsan.last_name) # si

print(zhangsan.fullname()) # zhang si

这不完事了,多加个括号的事(zhangsan.fullname-> zhangsan.fullname()),开开心心下班回家!

第二天,你一到公司,调用你接口的下游的同事张嘴就开始‘x@3#$5,你改了接口之后,老子昨天调用失败了一天’,你定位了一下原来是他们调用的是fullname这个属性,而不是fullname()这个方法

参考文章

标签:last,name,python,self,print,fullname,property,zhangsan,deleter
From: https://www.cnblogs.com/zlbingo/p/17464195.html

相关文章

  • Python大数据分析—BMI有关因素及健康分析
    一、数据说明1、背景介绍21世纪是人类追求健康的世纪;21世纪是人人享有保健的新时代。健康是人生最宝贵的财富!没有健康的身心一切无从谈起。随着经济发展和人们生活水平的迅速提高,人们在尽情享受现代文明成果的同时,生活条件提高了,可食品安全和环境卫生问题却层出不穷,生活质量......
  • 【20230607】【用Python让Excel飞起来】 第一章 python 快速上手 I
    001安装Anacondaanaconda.com直接下载,然后安装记得安装的时候将path和link.py点上,不然回头去配置环境变量有一些麻烦如何判断成功安装在CMD中输入conda-V即可查看002安装配置pycharm直接安装即可,官网下载,然后安装注意pycharm的pro版本是收费的,edu邮箱可以免费1年......
  • Python在循环中修改遍历的字符串
    举例展示Python在循环中修改遍历的字符串,将不会影响循环的遍历顺序和执行轮数astr="abcaef"bstr="bcef"foriinastr:ifinotinbstr:astr=astr.replace(i,'')print(i)如上示例代码中,当i='a'时,bstr中没有'a',输出'a'......
  • python线性脚本生成基本eml邮件,压缩文件,接口灌数据
    1importdatetime,zipfile,tarfile,logging,os,string,random,ipaddress,uuid,pytz,py7zr2importio,socket3fromemail.mime.textimportMIMEText4fromemail.mime.multipartimportMIMEMultipart5fromemail.mime.applicationimportMIMEA......
  • 实验六 turtle绘图与Python库应用编程体验
    试验任务一实验源码 task1fromturtleimport*defmove(x,y):'''画笔移动到坐标(x,y)处'''penup()goto(x,y)pendown()defdraw(n,size=100):'''绘制边长为size的正n变形'''foriinrange(n):......
  • Python: jwt
     importjwtfromdatetimeimportdatetimepayload_data={'sub':'4242','iss':'issuer',#issuerofthetoken'name':'JessicaTemporal','nickname':'Jess&#......
  • Python&Excel办公自动化
    操作工作簿01新建一个excel工作簿#2023-4-17importxlwingsasxw#启动excel,但不新建工作簿app是什么,app是excel程序本身app=xw.App(visible=True,add_book=True)#新建一个工作簿workbook=app.books.add()#保存新建的工作簿workbook.save('D:\python_data/tes......
  • java代码调用Python代码
    1,使用runtime调用Python脚本String[]arguments=newString[]{"E:\\ProgramFiles\\python.exe","E:\\wzCode\\signal.py",Arrays.toString(datas),String.valueOf(Num)};......
  • python基础20
    绝对导入和相对导入绝对导入始终以执行文件位置查找相对导入使用符号(.)句点符(.).表示当前路径..表示上一级目录相对导入就可以不按照执行文件所在位置为基准,而是参照当前文件所在位置当文件中......
  • python的名称空间和作用域
    1、  2、内置名称空间:Python解释器启动则产生,关闭即销毁 全局名称空间:存放的名字:运行顶级代码产生的名字,或者说不是函数的定义,也不是内置的,剩下的都是。存活的周期:Python文件执行则产生,Python文件运行完毕后销毁 局部名称空间:存放的名字:再调用函数时,运行函数体代......