Property属性使用

这篇具有很好参考价值的文章主要介绍了Property属性使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

★ 基本定义

一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法

★ property属性的两种方式

  • 装饰器 => 在方法上应用装饰器
  • 类属性 => 在类中定义值为property对象的类属性

★ 装饰器方式

  • 代码示例

    class Goods(object):
    
        def __init__(self):
            # 原价
            self.original_price = 100
            # 折扣
            self.discount = 0.8
    
        @property
        def price(self):
            # 实际价格 = 原价 * 折扣
            new_price = self.original_price * self.discount
            return new_price
    
        # 新式类独有
        @price.setter
        def price(self, value):
            self.original_price = value
    
        # 新式类独有
        @price.deleter
        def price(self):
            del self.original_price
    
    obj = Goods()
    obj.price         # 获取商品价格
    obj.price = 200   # 修改商品原价
    del obj.price     # 删除商品原价
    
  • 示例说明

    1.定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数
    2.经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法
    3.新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法;我们可以根据它们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除
    
  • 应用实例

    class Pager:
        def __init__(self, current_page):
            # 用户当前请求的页码(第一页、第二页...)
            self.current_page = current_page
            # 每页默认显示10条数据
            self.per_items = 10 
    
        @property
        def start(self):
            val = (self.current_page - 1) * self.per_items
            return val
    
        @property
        def end(self):
            val = self.current_page * self.per_items
            return val
    
    p = Pager(1)
    p.start  # 就是起始值,即:m
    p.end  # 就是结束值,即:n
    
    # Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。
    

★ 类属性方式

  • 代码示例

    class Goods(object):
    
        def __init__(self):
            # 原价
            self.original_price = 100
            # 折扣
            self.discount = 0.8
    
        def get_price(self):
            # 实际价格 = 原价 * 折扣
            new_price = self.original_price * self.discount
            return new_price
    
        def set_price(self, value):
            self.original_price = value
    
        def del_price(self):
            del self.original_price
    
        PRICE = property(get_price, set_price, del_price, '价格属性描述...')
    
    obj = Goods()
    obj.PRICE         # 获取商品价格
    obj.PRICE = 200   # 修改商品原价
    del obj.PRICE     # 删除商品原价
    
  • 示例说明

    1.当使用类属性的方式创建property属性时,经典类 和 新式类 无区别
    2.property方法中有个四个参数
    	第一个参数是方法名,调用 对象.属性 时自动触发执行方法
    	第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
    	第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
    	第四个参数是字符串,调用 对象.属性.__doc__ ,此参数是该属性的描述信息
    3.由于 类属性方式 创建property属性具有3种访问方式,我们可以根据它们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除
    

文章来源地址https://www.toymoban.com/news/detail-844150.html

到了这里,关于Property属性使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML特性(attribute)和DOM属性(property)

    是 HTML 标签上的某个属性,如 id、class、value 等以及自定义属性,定义后会呈现在标签上 DOM 对象上的属性,比如value,className 以及一些 onclik 等方法 attributes 是属于 property 的一个子集 在标签上定义的 HTML 标准属性会映射到 DOM 属性上,可以直接 element.property 获取 非标准属性不

    2024年02月15日
    浏览(34)
  • Vue 出现Syntax Error:TypeError: Cannot read property ‘vue‘ of undefined的一种解决办法

    出现如下情况 背景:首次克隆运行项目 技术背景:项目使用的前端框架和UI框架 :vue2+element-ui 然后npm install 安装依赖,得到node_modules包和package-lock.json文件,然后npm run dev启动报错。 排查原因: 首先看了package.json 文件的node版本和npm版本支持 当前的我的node和npm版本用的是:

    2024年02月13日
    浏览(42)
  • 使用 CSS 自定义属性

    我们常见的网站日夜间模式的变化,其实用到了 css 自定义属性。   CSS 自定义属性(也称为 CSS 变量)是一种在 CSS 中预定义和使用的变量。它们提供了一种简洁和灵活的方式来通过多个 CSS 规则共享相同的值,使得样式更易于维护和修改。 在这个例子中,我们定义了一个名

    2024年02月15日
    浏览(34)
  • Winform自定义控件与自定义属性的简单使用

    Winform自定义控件和属性的学习  最近新文章:C#Winform批量获取CSV内容展示,并保存 目录 一、自定义控件的使用 1.在Winform程序中添加新建项,选择Windows窗体用户控件 2.拖拽使用自定义控件到主窗体中 注意点① : 二、自定义控件的自定义属性 1.在自定义控件中添加一个控件

    2023年04月15日
    浏览(40)
  • 微信小程序 使用 echarts symbol属性不能使用自定义图标

      当我想去给 symbol  属性自定义图标时,控制台就报错 Image  is not defined !!! 原因是因为微信小程序不支持  new image() ; 下列就是echarts.js 源码,版本不同格式化后显示的 function 命名有所不同。但是全局就只有这么一个 new image ;全局搜一下就好 !!! 全局定义 canvas

    2024年02月13日
    浏览(65)
  • 【Unity】Unity Shader学习笔记(四)创建和使用、基本语法、属性基本类型、数值精度

    由于着色器是依赖于材质的,所以创建着色器之前通常要先创建一个材质(Material)。然后再创建一个Shader。 结果如下: 然后给材质指定Shader,再给物体指定材质。 建好Shader后双击打开,通常默认使用vs studio开发shader。一个Shader主要的内容都是写在 Shader {} 代码块中,其中包

    2024年02月16日
    浏览(41)
  • Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

    \\\"cannot read property of undefined\\\" 是一个常见的 JavaScript 错误,包含我在内很多人都会遇到,表示你试图访问一个未定义(undefined)对象的属性。这通常是因为你在访问一个不存在的对象或者变量。为了解决这个问题,你需要检查你的代码,确保在访问对象属性之前,对象已经被正

    2024年04月09日
    浏览(45)
  • 〖大前端 - 基础入门三大核心之CSS篇㉒〗- 过渡属性的基本使用

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2023年04月19日
    浏览(60)
  • vue3使用工作流bpmn.js实现保存 ,新增,修改 ,右边工具栏自定义,属性栏自定义

    vue3使用工作流bnpm.js实现保存 ,新增,修改 ,右边工具栏自定义,属性栏自定义

    2024年02月13日
    浏览(36)
  • C# 控件基础2——属性配置控件PropertyGrid使用详解,PropertyGrid自定义下拉框TypeConverter,PropertyGrid自定义弹窗UITypeEditor,特性

    最近比较忙,一段时间没写博文了。最近仿vs做了一个自定义界面的功能,使用到了PropertyGrid控件,让我的代码量减少了很多,就抽个晚上把PropertyGrid控件的使用技巧分享一下。 PropertyGrid控件估计大家都很熟悉,但凡使用winform开发过界面的都认识,就是配置控件属性的控件,

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包