关于python中的get,set方法

news2024/12/26 8:23:55

一般在python面向对象中,每个类内都会有其所对应的属性。

而在定义属性值的时候,可能还得会对这些属性值进行修改和获取。为了确保代码的安全性,封装性和可操作性,我们可以使用get,set方式去操控。

get方法用于获取属性值,而set方法用于设置属性值。

通过get,set 方法发,我们可以对对象的属性值进行设定和获取。

一.如何实现

关于方法,大致有两种。

我先来分享最简单的方法。

第一种
1.定义类和属性

首先,我们先要定义一个类,然后使用构造方法写出这个类的属性都包含什么。

这是一种不赋值的操作,具体使用看自己需求。

# 设定一个用户类
# 先简单定义三个属性(按照自己的需求)
class User:
    def __init__(self):
        self._name = None  # 姓名
        self._gender = None  # 性别
        self._age = None  # 年龄

在这里我们定义了一个User类,并在初始化方法init内定义属于User的私有属性(大多数init内都是属于他本类的私有属性)

2.设定get,set方法

简单举个栗子

# 获取name属性值
def get_name(self):
    return self._name

# 设置name属性值
def set_name(self, value):
    self._name = value

set方法可以依照自己的需求自定义,比如那么只能设定字符串类型的值等等。

在set方法中我们使用value来接受外部传递的值,然后将其赋值给对应的属性_name.

而get方法的目的就是获取刚刚设定的属性值。

3.使用方式
# 建立对象
user = User()
# 使用set方法给user对象的name属性赋值
user.set_name('光头强')
# 使用get方法获取属性值
print(user.get_name())
4.附加(设定属性时为None的原因)

关于我们为什么设定属性值为None,因为像我们这种写法如果给属性设定对于的参数时,那在建立对象值时就一定要给对象传递参数,不传会报错

第二种进阶版

@property是一种装饰器,用来修饰方法。

@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。
@setter()表示“可写”,可以用来修改设定属性值。

1、建立对象和属性

同理

class User:
    def __init__(self, name, gender, age):
        self._name = name  # 姓名
        self._gender = gender  # 性别
        self._age = age  # 年龄
2.设定get,set方法
@property
def name(self):
    return self._name
    
@name.setter
def name(self, value):
    self._name = value

需要注意的是,定义setter方法时,方法名称必须与只读属性的名称相同,并且应该在定义getter方法之后。

3、使用方法
# 建立对象
user = User
# 赋值
user.name = '光头强'
# 获取
print(user.name)

这种方法相对来说可能会简单,但新手还是建议去使用第一种。

第一种相对来说会使用的更清楚些

后续持续更新中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贝莱德与摩根大通的最新季度持仓分析

近期,华尔街的两大投资巨头贝莱德和摩根大通公布了其2024年第二季度的13F报告,揭示了他们在投资组合上的最新动向。通过分析这些持仓数据,我们可以更清楚地了解这些顶级投资机构的投资策略和市场偏好。 贝莱德的科技巨头与能源投资 根据贝莱…

Trilium Notes:你的个人知识库!【送源码】

简介 Trilium Notes是一款功能全面的层次化笔记应用,通过树形结构构建个人知识库,支持Markdown编辑、网页内容剪切、笔记搜索与映射,并特别提供了基于画布的自由涂画功能,极大地提升了笔记的灵活性和创造性,是知识管理…

移动UI:把握好这9点,轻松设计积分兑换页面。

设计移动UI的积分兑换页面需要考虑用户体验和交互设计,以下是一些设计建议: 1. 清晰的积分信息展示: 在页面顶部或者中间位置展示用户当前的积分数量,让用户清晰地了解自己的积分情况。 2. 商品列表展示: 以列表或者…

[数据集][目标检测]违规撑伞检测数据集VOC+YOLO格式341张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):341 标注数量(xml文件个数):341 标注数量(txt文件个数):341 标注类别…

浅看MySQL数据库

有这么一句话:“一个不会数据库的程序员不是合格的程序员”。有点夸张,但是确是如此。透彻学习数据库是要学习好多知识,需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西,跟着小编一起来看一下吧。 什么是数据…

什么是树的先/中/后序遍历

前言 很久没有写c教程(有几个月)了,今天来讲讲树 为什么之前不讲树因为我不会但我现在能写出一些树的选择题了 首先我们画一棵树: 有些潦草 遍历是什么 我们要研究先/中/后序遍历,我们应该先知道什么叫遍历 遍历…

论文精要:《对静态分析缺陷报告进行聚类,以降低维护成本》

1. 前言 周末找到一篇《对静态分析缺陷报告进行聚类,以降低维护成本》,读了之后受到不少启发,特此将笔记整理出来。 论文出处: Published in: 2013 20th Working Conference on Reverse Engineering (WCRE)Date of Conference:…

疫情期间高校人员管理

TOC springboot322疫情期间高校人员管理 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大,人为计算方面才是一个巨大的短板,所以发明了各种计算设备,从结绳记事,到算筹,以及算盘,到如今的计算机&a…

C语言家教记录(六)

导语 本次授课的内容如下:指针,指针和数组 辅助教材为 《C语言程序设计现代方法(第2版)》 指针 指针变量 计算机按字节划分地址,每个地址访问一个字节 指针变量指向变量的地址,指的是变量第一个字节的…

MySQL InnoDB中一个update语句从执行到提交的全过程(1)

目录 一、开启事务 二、sql解析、查询计划生成 三、查询要修改的数据 1、读buffer pool的过程 buffer pool的结构组成 1)Free List (空闲链表) 2)LRU List (最近最少使用链表) 3)Flush List (刷新链表) 三条链表之间的关系 2、怎么…

[Linux][OS][信号的保存和处理]

目录 信号的处理 1. 在内核中的表示 2. 相关概念 3. 信号集操作函数 4.sigprocmask 5.sigpending 信号的捕捉 重谈地址空间 信号的处理 1. 在内核中的表示 普通信号,多次产生只会记录一次 信号范围 [1,31],每一种信号都要有自己的一种处理方式…

Java Spring|day3.SpringBoot

Spring Boot 定义 从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的Spring Bean配置。Spring Boot使用“习惯优于配置”的理念让你的项目快速地运行起来,使用Spring Boot很容易创建一个能独立运行、准生产级别、基于S…

SpringBoot + Hadoop + HDFS + Vue 实现一个简单的文件管理系统

1. 安装前的准备工作 1.1 更新系统并安装必要的工具 在终端中运行以下命令: sudo apt-get update sudo apt-get install -y ssh rsync curl1.2 安装 Java 如果系统中没有安装 Java,可以通过以下命令安装 OpenJDK: sudo apt-get install …

软件安全测试的必要性,第三方软件测试机构进行安全测试好处简析

在当前信息技术迅猛发展的时代,软件的安全性显得尤为重要。随着越来越多的企业依赖软件进行日常运营,软件漏洞和安全隐患所带来的风险也逐渐上升。因此,软件安全测试不再是可有可无的选择,而是每个企业必须考虑的关键环节。 一、…

Node之npm常用命令与package.json文件

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) npm常用命令 npm默认与Node.js一起安装,可以在命令行中输入…

达梦数据库系列—49.审计功能

目录 1、打开审计 2、审计级别 系统级审计 语句级审计 对象级审计 3、审计文件管理 删除审计文件 查看审计信息 4、审计分析 审计分析工具Analyzer 审计分析工具dmaudtool 1、打开审计 0:关闭审计1:打开普通审计2:打开普通审计和…

qt 5.15.2 使用pdf

1. 安装Qt 5.15.2 选择对应编译器和源码: 安装后已有pdf对应的库和源码: 将QtPdf和QtPdfWidgets目录拷贝到msvc2019_64/include(根据需要用到的编译器而定) 将C:\Qt\5.15.2\Src\qtwebengine\src\pdf\api所有文件拷贝到C:\Qt\5.15.2\msvc2019_64\include\…

低功耗蓝牙协议栈如何学习?

目录 1. 基础知识 1.1 了解BLE基本概念 1.2 阅读BLE规范 2. 实践和开发工具 2.1 使用开发板 2.2 安装开发环境 3. 学习资源 3.1 官方文档和示例 3.2 在线课程和教程 4. 实践项目 4.1 简单项目 4.2 复杂项目 5. 深入理解协议栈 5.1 分析协议栈 5.2 调试和分析 6…

v-charts的下载与引用

近期,因项目需要,需用v-charts做一些登录后首页的展示图,按之前的逻辑echarts官网都有API直接拿来用就行了,但是我的项目框架是vuespringboot,我的vue版本是2.6.1,这个v-charts文档在网上搜了搜&#xff0c…

nginx服务部署及其平滑升级

概述 1. 7层负载均衡(nginx) 1. 停掉4层的环境 systemctl disable --now keepalived.service # 停用之前的4层协议方式2. 源码安装nginx tar zxf nginx-1.22.1.tar.gz 具体方式是源码编译“三部曲” ./configure # 负责检查环境,生成指导…