python--面向对象的三大特征---封装、继承、多态

1.封装:

        1,在面向对象中,封装指的是一种安全机制,不让外界修改或者直接操作,将属性私有化; 

              如果要访问属性,提供公开的方法(getter,setter)

        2.  python的类如何私有化成员(属性,方法)

             原有的属性或者方法名前加__                ==>两个_ _

             封装后的属性或者方法,只能在类的内部调用!!!

        3,python为我们提供了三种不同的封装方式

                        1,标准写法:封装属性,提供get和set方法

                        2,propterty全局函数,封装get和set方法,在返回一个新的属性

                        3,@propterty和@名称.setter实现   

# 求圆的周长和面积class Circle(object):def __init__(self, r, pi):self.r = rself.PI = pidef get_area(self):return self.r ** 2 * self.PIdef get_zc(self):return 2 * self.r * self.PIclass Juxing(object):def __init__(self, width, height):self.__width = widthself.__height = heightdef get_width(self):    #get封装方法相当于钥匙,限制外界访问return self.__widthdef set_width(self, width):     #set方法相当于设置钥匙,有了set,外界可以设置值self.__width = widthdef area(self):#封装后的属性和方法,只能在类内部使用self.__my_speak()return (self.__width + self.__height) * 2def zc(self):self.__my_speak()return self.__height * self.__widthdef __my_speak(self):#该方法只能在类内部只用,所以私有化这个方法,外界无法访问该方法print("我是一个矩形,欢迎使用我")if __name__ == '__main__':# c1 = Circle(2, 3.14)# print(c1.get_area())# juxing = Juxing(2, 3)# print(juxing.area(), juxing.zc())w = float(input("请输入矩形的宽:"))h = float(input("请输入矩形的高:"))a = Juxing(w, h)print(f"该矩形的面积是{a.area()},周长为{a.zc()}")# 修改宽--set方法修改封装后的属性a.set_width(w * 2)print(f"该矩形的面积是{a.area()},周长为{a.zc()}")

运行结果: 

请输入矩形的宽:5
请输入矩形的高:5
我是一个矩形,欢迎使用我
我是一个矩形,欢迎使用我
该矩形的面积是20.0,周长为25.0
我是一个矩形,欢迎使用我
我是一个矩形,欢迎使用我
该矩形的面积是30.0,周长为50.0

2.继承:子类会继承父类的一些属性或者方法

class 子类(父类[,父类2,父类3]) :

注意:子类继承父类时,不是所有的属性和方法都会继承;是继承能够继承的类成员

注意:继承主要解决的是代码复用问题,将多个子类需要用的方法,可以定义在父类中

class Man(object):def __init__(self):self.__name = "ma"self.company = "alibb"self.money = 10000000def speak(self):print("我对钱不感兴趣")print("我最后悔的一件事创建了albb")def __talk(self):print("这个是封装,是私有方法,我不想告诉别人")class Son(Man):def __init__(self):#super表示父类super().__init__()self.name = "我叫儿子"self.age = 18if __name__ == '__main__':s1 = Son()print(s1.money)print(s1.company)s1.speak()

 运行结果:

10000000
alibb
我对钱不感兴趣
我最后悔的一件事创建了albb

3,多态

                一个事务有多种状态,

                在继承的基础上,父类引用指向子类实例对象的现象

                python是弱数据类天生支持多态

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

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

相关文章

面试算法-166-排序链表

题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 解 class Solution {public ListNode sortList(ListNode head) {if (head null || head.next null…

【stm32】I2C通信协议

【stm32】I2C通信协议 概念及原理 如果我们想要读写寄存器来控制硬件电路,就至少需要定义两个字节数据 一个字节是我们要读写哪个寄存器,也就是指定寄存器的地址 另一个字节就是这个地址下存储寄存器的内容 写入内容就是控制电路,读出内容就…

R-Tree的简单介绍

一、R-Tree简介 R-Tree,全称是“Real Tree”,是一种专门为处理多维空间数据(尤其是二维空间数据,如地理坐标)设计的树形数据结构。 简单来说,它就像是一个特殊的目录,将空间数据按照它们的位置…

NIKKE胜利女神PC怎么设置中文 手把手教你设置中文教程

这个游戏中的妮姬分四个企业,其中朝圣者这个派别的妮姬很少而且不在愿望单理,朝圣者的所有姐姐都很哇塞,红莲更是其中的大姐大。一般想抽朝圣者只能靠歪或者出限定卡池,举个栗子,我入坑的时候 朝圣者 神罚 是限定卡池&…

计算系数(acwing,数论)

题目描述: 给定一个多项式 (axby)^k,请求出多项式展开后 x^n*y^m 项的系数。 输入格式: 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格…

【STL】stack与queue的底层原理及其实现

文章目录 stack的介绍库中stack的使用栈的模拟实现queue的介绍库中queue的使用queue的模拟实现 stack的介绍 (图片来自知乎) 1.stack是一种容器适配器,模拟了栈的数据结构。数据只能从一端进去,另一端出来(先进后出&am…

基于单片机水质检测仪系统仿真设计

**单片机设计介绍, 基于单片机水质检测仪系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机水质检测仪系统仿真设计的主要目标是,通过仿真手段验证基于单片机的水质检测仪系统的设计方…

硬盘容量骤降为0?原因解析与数据恢复秘籍

当我们打开计算机,准备进入日常的工作或娱乐时,突然发现硬盘容量显示为0,这无疑是一个令人头痛的问题。硬盘,作为我们存储重要数据和文件的关键设备,一旦容量显示为0,就意味着我们可能面临数据丢失的风险。…

Arduino开发 esp32cam+opencv人脸识别距离+语音提醒

效果 低于20厘米语音提醒字体变红 QQ录屏20240406131651 Arduino代码 可直接复制使用&#xff08;修改自己的WIFI) #include <esp32cam.h> #include <WebServer.h> #include <WiFi.h> // 设置要连接的WiFi名称和密码 const char* WIFI_SSID "gumou&q…

MYSQL 8.0版本修改用户密码(知道登录密码)和Sqlyog错误码2058一案

今天准备使用sqlyog连接一下我Linux上面的mysql数据库&#xff0c;然后就报如下错误 有一个简单的办法就是修改密码为password就完事!然后我就开始查找如何修改密码! 如果是需要解决Sqlyog错误码2058的话&#xff0c;执行以下命令&#xff0c;但是注意root对应host是不是loca…

Fecify站点斗篷cloak

斗篷cloak站点斗篷模式功能发布&#xff01;全新的应用场景&#xff0c;该模式是针对推广不用GMC&#xff0c;而是通过facebook&#xff0c;或者其他的一些平台/工具推广&#xff0c;这些推广方式的特点是&#xff1a;不需要商品的图片&#xff0c;或者说不会排查商品图片的侵权…

基础语法复习

常用的定义&#xff1a; 读取数据加速&#xff1a; input sys.stdin.readline 设置递归深度&#xff1a; sys.setrecursionlimit(100000) 记忆化搜索&#xff1a; from functools import lru_cache lru_cache(maxsizeNone) 计数器&#xff1a; Counter 类是一个非常有…

P8707 [蓝桥杯 2020 省 AB1] 走方格

原题链接&#xff1a;[蓝桥杯 2020 省 AB1] 走方格 - 洛谷 目录 1.题目描述 2.思路分析 3.代码实现 1.题目描述 2.思路分析 题目大意&#xff1a;现在有个人站在第 1 行第 1 列&#xff0c;要走到第 i 行第 j 列&#xff08;每次只能向右或者向下走&#xff09;&#xff0…

计算机的发展趋势

本文 我们来说计算机的发展趋势 目前来讲 计算机是朝着 巨型化 微型化 网络化 智能化发展 巨型化 指功能巨型化 是指其高速运算、大存储容量和强功能的巨型计算机。其运算能力一般在每秒百亿次以上、内存容量在几百兆字节以上。 主要用于航空航天、军事、气象、人工智能、生…

单链表学习

//静态链表&#xff0c;只往后看&#xff0c;找前面必须遍历 //算法题用数组解题更快速 //初始化,头节点为空 //将x插入到头节点 //将x插到结点k的后面 //将下标k的后面的点删掉 #include<algorithm> #include<iostream> #include<cstring> #include<queu…

Leetcode:27.移除元素

题目要求 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

智能单灯控制器 计讯物联TL112

智能单灯控制器集成了先进技术的照明控制设备&#xff0c;它极大地改变了传统照明方式&#xff0c;并使之更加智能化。计讯物联智能单灯控制器TL112广泛应用于道路、景区、园区、隧道等场景智慧路灯杆使用。      智能单灯控制器通过集成最先进的传感器、控制模块和通信技术…

基于vue实现动态table

1、代码 <div style"height: 600px; overflow: scroll;"> <!-- height: 600px; overflow: scroll;作用是超出页面可以滑动 --><div ng-repeat"row in entity.procedureList"><cb-title title"工序{{row.procedireLocation}}&quo…

SpringBoot整合RabbitMQ,三种交换机类型示例

SpringBoot整合RabbitMQ&#xff0c;三种交换机类型示例 1、流程概括 2、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>3、配置RabbitMQ连接 在a…

【C++成长记】C++入门 |auto、范围for、nullptr

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;C❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、auto关键字 1、auto简介 2、auto的使用细则 &#xff08;1&#xff09; auto与指针和引用结合起…