程序猿大战Python——面向对象——私有权限

news2024/11/24 20:07:40

私有属性

==目标:==掌握私有属性的使用。

为了更好的限制属性的访问和包含隐私,可以给属性设置私有权限。

当把属性设置为私有属性后,则该属性只能被本类直接访问。

定义私有属性语法:

self.__属性名

设置和获取私有属性值语法:

class 类名(xxx):
    # 设置私有属性值[set]
    def set_私有属性名(self,参数):
        self.私有属性 = 参数
​
    # 获取私有属性值[get]
    def get_私有属性名(self):
        return self.私有属性

例如,一起来完成:

(1)FangGe把技术传承给小徒弟时,不想把自己的私房钱(¥6000000)继承给徒弟;

(2)这时,就要为私房钱这个属性设置私有权限;

(3)思考:若想要来访问私有属性,该怎么做呢?

# 1.父类:Master
class Master(object):
    def __init__(self):
        self.__money = 6000000
​
    # 设置
    def set_money(self,money):
        self.__money = money
    # 获取
    def get_money(self):
        return self.__money
​
# 2.子类
class TuDi(Master):
    pass
​
# 3.能否访问?
# xiao_fang = TuDi()
# print(xiao_fang.__money)   # 不能访问?
​
master = Master()
master.set_money(5000000)
print(master.get_money())
# 升级:
# 1.当子类继承了父类后, 子类就拥有了父类的属性和方法
# 2.当子类继承了父类后, 子类就拥有了父类的【非私有】属性和【非私有】方法

==总结:==

(1)当要定义私有属性时,仅需要在属性名前添加();==A、双下划线==;B、不添加任何内容;

(2)注意:如果要从外部访问私有属性值,建议要在类中定义set/get方法。

私有方法

==目标:==了解私有方法的使用。

当把方法设置为私有方法后,则该方法只能被本类直接访问。

定义私有方法语法:

def __方法名(self):
     ...

例如,一起来完成:

(1)FangGe把技术传承给小徒弟时,不想把自己独创配方的制作过程继承给徒弟;

(2)这时,就要为制作独创配方这个方法设置私有权限;

(3)思考:该怎么访问私有方法呢?

# 1.定义父类
class Master(object):
    def __make_secret(self):
        print("===================")
        print("加葱姜蒜...")
        print("加酱油,加白醋")
        print("辣椒面...")
        print("制作好卖给我的学生!!")
        print("===================")
​
    # 间接
    def use(self):
        self.__make_secret()
​
​
# 2.子类??
# 3.直接访问
master = Master()
# master.__make_secret()  # 不能?
master.use()

==总结:==

(1)当把方法设定为私有权限后,则该方法不会被继承给子类;

(2)注意:当子类继承了父类后,子类拥有父类的()。==A、非私有属性和非私有方法==;B、属性和方法;

面向对象综合案例

案例:减肥

==目标:==掌握面向对象方法和属性的使用。

例如,一起来完成:

(1)小方同学当前体重是100kg;

(2)每当他跑步一次时,则会减少0.5kg;

(3)每当他大吃大喝一次时,则会增加2kg;

(4)假如跑步5次后,再大吃大喝一次,体重如何?

(5)请试着采用面向对象思想来编写案例。

# 1.定义类:属性[变量]、行为[方法]
class Student(object):
    def __init__(self):
        # 默认
        self.weight = 100

    def run(self):
        self.weight = self.weight - 0.5
        print(f"跑步一次,减肥0.5kg,当前体重为:{self.weight}kg")

    def eat(self):
        self.weight += 2
        print(f"=====大吃大喝一顿,增重2kg,当前体重为:{self.weight}kg")

# 2.创建对象
student = Student()
print(f"当前体重为:{student.weight}")
student.run()
student.run()
student.run()
student.run()
student.run()
student.eat()

==总结:==

(1)在类内部调用或获取属性时,可以使用()方式;==A、self.属性名==;B、类名.属性名;

(2)当通过对象来调用方法时,可以使用【self.方法名()】方式。

==总结:==

(1)我们会发现,对于魔法方法的使用,会在某些特殊时刻自动被调用;

(2)在学习面向对象知识时,我们会发现总结起来就是五个字:()。==A、一切皆对象==;B、一切都是类;

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

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

相关文章

云计算期末综合测试题

云计算综合测试题 单选题填空题判断题简答题 单选题 这里选择题,直接以填空题展示,并给出解析 Bigtable是(Google)开发的分布式存储系统 解析:分布式结构化数据表Bigtable是Google基于GFS和Chubby开发的分布式存储系统…

Redis 学习笔记(2)

目录 1 Redis的持久化1.1 RDB持久化方案1.2 AOF持久化方案 2 Redis架构2.1 主从复制架构2.2 哨兵集群设计2.3 哨兵集群设计 3 Redis事务机制4 Redis过期策略与内存淘汰机制4.1 过期策略4.2 内存淘汰机制 5 Redis高频面试题4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩 1 Redis的持久化…

2. 数据结构分析即索引库的crud

1. 数据库脚本 DROP TABLE IF EXISTS tb_hotel; CREATE TABLE tb_hotel (id bigint(0) NOT NULL,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 酒店名称,address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_090…

FlowUs2024重磅革新预告:RAG技术赋能『问问AI』,笔记变现新纪元等你开启!

🎉 在FlowUs的广阔天地间,知识的边界被无限拓展,引领着一场场创新与收获的庆典!🚀 随着一年间不断的精进与革新,FlowUs与众多用户并肩前行,在追求极致体验的道路上迈出坚实步伐。步入2024年&am…

Javase.图书管理系统基本框架

图书管理系统基本框架 1.核心类介绍2. book包详解2.1 Book 类2.1.2 代码展示2.1.2 代码解析 2.2 BookList 类2.2.2 代码展示2.2.2 代码解析 2.3Book类和BookList类的联系 3. 用户角色与管理3.1 User 类3.1.1 代码展示3.1.2 代码解析 3.2 adminUser 类3.2.1 代码展示3.2.2代码解…

学生选课管理系统(JAVA课设)PS:有前端界面

1.课设要求描述 实现系统的所有功能,包括但不限于: 学生信息管理(增加、删除、修改、查询)课程信息管理选课操作成绩管理 2.制作思路及基础讲解 此项目主要是用于完成大二下半学期的JAVA大作业,也可当作课设&…

Ubuntu:解决github出现 Permission denied (publickey)的问题

因为使用的Ubuntu 长久没有使用,使用下载的时候突然报错,使用ssh key这种方式进行clone ,pull github上面的项目,使用 git clone或者git pull origin master出现permission denied (publickey),原因是因为ssh key过期失…

leetcode 二分查找·系统掌握 x的平方根

题目&#xff1a; 题解 这题可以使用~01~泛型查找在0~x/2的范围内查找答案。 int mySqrt(int x) {long l0,rx,mid;while(l<r){mid(lr1)>>1;if(mid*mid>x)rmid-1;else lmid;}//因为一定有答案所以不用判定是否查找失败return l;}

计算机系统基础实训六-ShellLab实验

实验目的与要求 1、让学生更加理解进程控制的概念和具体操作方法&#xff1b; 2、让学生更加理解信号的概念和具体使用方法&#xff1b; 3、让学生更加理解Unix shell程序的原理和实现方法&#xff1b; 实验原理与内容 shell是一种交互式的命令行解释器&#xff0c;能代表…

从关键新闻和最新技术看AI行业发展(2024.6.3-6.16第二十五期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky的公众号&…

Node.js 系列之 Express 框架入门实战教程

目录 1 Node.js是什么2 Express初体验3 Express 路由3.1 什么是路由3.2 路由的使用3.3 获取路由参数 4 常见响应设置4.1 express 响应方法4.2 原生响应方法 5 express 中间件5.1 中间件作用5.2 中间件类型5.3 全局中间件5.4 路由中间件 6 获取请求体数据7 路由模块化 1 Node.js…

51单片机学习记录(二)————外部中断

文章目录 前言一、中断1.中断的定义 二、51中断1.中断源2.中断的配置3.中断允许控制寄存器4.中断触发方式51中断有两种触发方式&#xff1a; 三、外部中断1.外部中断引脚2.外部中断配置&#xff08;以外部中断0为例&#xff09; 总结 前言 一个学习嵌入式的小白~ 有错误评论区…

【ARM】PK51如何将BL51链接器切换成LX51链接器

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决客户在使用PK51进行项目研发的时候&#xff0c;想要使用LX51链接器进行使用。 2、 问题场景 客户在使用51芯片进行开发的时候&#xff0c;发现工程中使用的是BL51链接器&#xff0c;而不是LX51链接器&#xff…

【非常实验】如何在移动设备上运行 Docker?

本章就从在 DevOps 中最基本但也是最强大的工具 Docker 开始。最近,我在尝试更多Termux的可能性,于是就想着试试Docker适不适合arm架构。 我用的是天玑9000芯片,而不是高通,所以显示不出来 Qualcomm。所以我决定从在手机上运行 docker 开始,但这可能吗?让我们一起来看看吧…

Node.js实现短链接(ShortLink):shortid、epxress让URL更简单

文章目录 一、短链接介绍二、插件介绍1、epxress2、shortid 三、实现方案1、安装依赖&#xff1a;2、实现原理 四、示例代码五、测试生产短链接 一、短链接介绍 短链接是指仅包含一个网址的链接形式&#xff0c;通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。…

基于CSDN的Markdown文本编辑器的博客界面优化 | HTML | 文本标签 | 图像标签 | 个人主页引导

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 今天毛毛张分享的内容是如何在CSDN的Markdown编辑器中实现上图的效果&#xff0c;如果觉得能帮助到你的话就点击个人主页点点关注吧❗ 文章目录 1.前言2.基础知识3.字…

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发 码客 卢益贵 ygluu 关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…

ArcGIS批量投影转换的妙用(地理坐标系转换为平面坐标系)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 这次文章我们来介绍一下&#xff0c;如何巧妙用要素数据集来实现要素的批量投影。不需要ArcGIS的模型构建器与解决。 例如&#xff0c;有多个要素要将CGCS_2000地理坐标系投…

单机、集群和分布式

目录 1.概述 2.单机服务器 单机版的服务器的性能&#xff0c;设计上的瓶颈&#xff1f; 3.集群 解决瓶颈1&#xff1a; 没有解决瓶颈2&#xff1a; 没有解决瓶颈3&#xff1a; 集群的优点&#xff1f; 集群的缺点&#xff1f; 4.分布式 分布式的优点&#xff1f; 分…

1970-2022年中国碳排放1KM栅格数据

【数据简介】 数据名称&#xff1a;1970-2022年中国碳排放栅格数据&#xff08;1KM) 区域范围&#xff1a;全国 数据格式&#xff1a;tif文件 数据大小:800M 数据来源&#xff1a;欧盟委员会全球大气排放数据库&#xff08;EDGAR) 部分数据预览&#xff1a; 原文链接http…