2024速通python之python面向对象

文章目录

  • 一、类与对象
  • 二、构造方法
  • 三、toString方法
  • 四、__eq__方法,相当于equals
  • 五、封装、继承与多态
    • 1.封装
    • 2.继承
    • 3.重写
    • 4.类型注解
    • 5.多态
    • 6.抽象类与抽象方法

「章节总览」
 
      【2024速通python之python基础 https://blog.csdn.net/weixin_45404884/article/details/138578955】
      【2024速通python之python进阶 https://blog.csdn.net/weixin_45404884/article/details/138663338】
      【2024速通python之python高阶 https://blog.csdn.net/weixin_45404884/article/details/138810133】
      【2024速通python之python面向对象https://blog.csdn.net/weixin_45404884/article/details/139473507】

一、类与对象

class Student:name = Noneage = Nonegrade = Nonedef say_hello(self):print(f"hello 我是:{self.name},我的年龄:{self.age},我的成绩:{self.grade}")student = Student()
student.name = "lisi"
student.age = 18
student.grade = 99
student.say_hello()

二、构造方法

  • Python类可以使用:init()方法,称之为构造方法。
    可以实现:
    • 在创建类对象(构造类)的时候,会自动执行。
    • 在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用。
    • 千万不要忘记init前后都有2个下划线
class Student:name = Noneage = Nonegrade = Nonedef __init__(self, name, age, grade):self.name = nameself.age = ageself.grade = gradedef say_hello(self):print(f"hello 我是:{self.name},我的年龄:{self.age},我的成绩:{self.grade}")student = Student("lisi", 18, 99)
student.say_hello()

三、toString方法

class Student:name = Noneage = Nonegrade = Nonedef __init__(self, name, age, grade):self.name = nameself.age = ageself.grade = gradedef __str__(self):return f'{self.name}, {self.age}, {self.grade}'student = Student("lisi", 18, 99)
print(student)

四、__eq__方法,相当于equals

class Student:name = Noneage = Nonegrade = Nonedef __init__(self, name, age, grade):self.name = nameself.age = ageself.grade = gradedef __eq__(self, other):return self.name == other.name and self.age == other.age and self.grade == other.gradestudent1 = Student("lisi", 18, 99)
student2 = Student("lisi", 18, 99)
student3 = Student("lisi", 18, 98)
print(student1 == student2)
print(student1 == student3)

五、封装、继承与多态

1.封装

将现实世界事物在类中描述为属性和方法,即为封装。
类中提供了私有成员的形式来支持。

  • 私有成员变量
  • 私有成员方法

定义私有成员的方式非常简单,只需要:

  • 私有成员变量:变量名以__开头(2个下划线)
  • 私有成员方法:方法名以__开头(2个下划线)
    即可完成私有成员的设置
class Student:name = Noneage = Nonegrade = None__number = Nonedef __print_name(self):print(self.name)

2.继承

  • 单继承
    class 类名(父类名)
class smallStudent(Student):def __init__(self, name, age, grade):self.name = nameself.age = ageself.grade = grade
  • 多继承
    class 类名(父类名,父类名),默认以继承顺序(从左到右)为优先级
    即:先继承的保留,后继承的被覆盖
class small1Student(Student, smallStudent):def __init__(self, name, age, grade):self.name = nameself.age = ageself.grade = grade

3.重写

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
如果需要使用被复写的父类的成员,需要特殊的调用方式:
方式1:
调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)

方式2:
使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()

class Phone:name = "Phone"number = Nonedef print_name(self):print(self.name)class myPhone(Phone):name = "myPhone"number = Nonedef print_name(self):print(super().name)print(Phone.name)

4.类型注解

不太明显的变量类型,采用加冒号的形式,确定他的类型

class Phone:name : str = "Phone"number : int = 12

5.多态

class Animal:def speak(self):passclass Dog(Animal):def speak(self):print("I am a Dog")class Cat(Animal):def speak(self):print("I am a Cat")dog = Dog()
dog.speak()
cat = Cat()
cat.speak()

6.抽象类与抽象方法

上面示例中的pass,即声明了Animal的speak方法是抽象方法,所以Animal是抽象类

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

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

相关文章

SpringBoot: 读取项目的Git版本号

在开发项目的时候,我们经常会想要拿到线上运行的程序版本,以确定程序是否正确发布。Spring Boot提供了这样的能力支持。这个能力的核心组件是3个: Maven插件git-commit-id-maven-plugin,用于生成.properties文件,里边包含git的各…

项目部署服务器--浏览器拒绝访问问题

一、检查自己的环境 是本地环境、还是虚拟环境 当您使用 Gunicorn 启动 Flask 应用并监听 0.0.0.0:5000 时,您的 Flask 应用已经可以在服务器上运行并通过该端口提供服务了。但是,0.0.0.0 是一个特殊的 IP 地址,它表示“所有可用的网络接口”…

字节序 大端 小端

字节序(Byte Order),指的是在计算机系统中,多字节数据(如整数、浮点数)在内存中存储时的字节排列顺序。主要有两种类型的字节序:大端字节序(Big Endian)和小端字节序&…

Windows 包管理器 Chocolatey

1、前言 在Windows上做开发,经常会为频繁安装卸载软件而烦恼,着实有点羡慕Linux和macOS上强大的包管理系统。 今天就来解决这个问题。 什么是包管理器? 包管理器是一种自动安装、配置、升级和卸载软件包的工具。它可以解决手动安装软件的诸多痛点: &…

【C语言】for循环

简介 在C语言中,for循环是一种常用的控制结构,用于重复执行一段代码多次。for循环包括三个部分:初始化表达式、循环条件和更新表达式。 for循环的语法如下: for (初始化表达式; 循环条件; 更新表达式) {// 循环体 }初始化表达式…

C#WPF数字大屏项目实战03--数据内容区域

1、内容区域划分 第一行标题,放了几个文本框 第二行数据,划分成3列布局 2、第1列布局使用UniformGrid控件 最外面放UniformGrid,然后里面放3个GroupBox控件,这3个groupbox都是垂直排列 3、GroupBox控件模板 页面上的3个Group…

计算机网络 —— 数据链路层(无线局域网)

计算机网络 —— 数据链路层(无线局域网) 什么是无线局域网IEEE 802.11主要标准及其特点: 802.11的MAC帧样式 我们来看看无线局域网: 什么是无线局域网 无线局域网(Wireless Local Area Network,简称WLAN…

数仓建模—指标体系分类分级和评价管理

数仓建模—指标体系分类分级和评价管理 前面其实我们提到了指标体系的分类,以及一些指标体系管理相关的内容,今天我们详细的介绍一下相关的知识点 指标 = 业务维度描述 + 技术维度描述 指标,是反映某种事物或现象,描述在一定时间和条件下的规模、程度、比例、结构等概念…

Ivy优化算法-2024年7月SCI一区顶刊新算法!公式原理详解与性能测评 Matlab代码免费获取

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、初始化 二、协调有序的种群增…

【宠粉赠书】大模型时代的网络安全:安恒“网安三剑客”实战指南

不知不觉中,小智的粉丝已经突破一万。为了回馈粉丝们的厚爱,今天小智给大家送上一套网络安全界的三宝书——安恒"网安三剑客"。下面我会详细给大家介绍这套图书,文末留有领取方式。 随着人工智能(AI)和大模型…

finalshell刚连上就断,这个参数你注意到了吗

在实际应用中可能一不下心弄错一个参数就会让你的finalshell刚连上就断,如下图所示。 1、进入ssh目录下,修改ssh_config文件 2、修改UseDNS no,并把前面的#去掉。 注:如果在ssh_config文件见不到UseDNS yes ,可以打开sshd_config,他们是在…

Vue 2 + Element UI 选择一个el-select清空另一个el-select选中的值

需求&#xff1a;表单中有两个下拉选择器&#xff0c;先选中第一个&#xff0c;清空第二个选中的值 尝试过this.$refs[form].resetFields(field name);全都失效&#xff01; 效果图如下&#xff1a; 先选择商品分类&#xff0c;再去选择商品列表中的某一件商品 <el-form-…

园区运营管理平台的功能架构

产业园区作为推动地方经济发展的重要载体&#xff0c;其运营管理水平直接影响到园区的竞争力和可持续发展能力&#xff0c;园区运营管理平台作为园区的运营管理工具&#xff0c;旨在通过智能化、自动化的手段提升园区的运营效率和服务水平。 园区运营管理平台不仅为园区管理者提…

JavaScript中this方法;var,let,constd区别;JSON是什么

this方法 1、在对象方法中&#xff0c; this 指向调用它所在方法的对象。 2、单独使用 this&#xff0c;它指向全局(Global)对象。 3、函数使用中&#xff0c;this 指向函数的所属者。 4、严格模式下函数是没有绑定到 this 上&#xff0c;这时候 this 是 undefined。 5、在 HT…

SAS:什么时候用kcompress呀?

问题&#xff1a;如何截取ECGTPT变量中的后三个字符&#xff1f; 下图展示了以k开头的以及非k开头的substr函数和length函数&#xff0c;发现在UTF-8编码下&#xff0c;仅以k开头的函数能够截取成功。 释疑&#xff08;以下内容来自SAS Help&#xff09; SAS提供的字符函数…

conflicting types for 错误问题

操作系统真象还原中&#xff0c;第十一章出现的问题&#xff1a; 怎样编译都会出现一个conflicting types for ’xxx‘的错误 出现这个错误的原因&#xff1a; 头文件声明和定义参数稍有不同 头文件中声明 void Hanlder(const char * buf); 在定义时写作 void Hanlder(char…

浏览器工作原理

主要分为导航、获取数据、HTML解析、css解析、执行javaScript、渲染树几个步骤。 1.导航 DNS查询 DNS服务器类似于电话簿&#xff0c;里面包含公共的IP地址以及相关主机名数据库&#xff0c;我们输入一个域名&#xff0c;他能帮我们映射到对应的IP地址。&#xff08;第一次查…

【kubeflow文档】Kubeflow Training Operator

What is Training Operator Training Operator是一个Kubernetes原生项目&#xff0c;用于对使用各种ML框架&#xff08;如PyTorch、TensorFlow、XGBoost等&#xff09;创建的机器学习&#xff08;ML&#xff09;模型进行微调和可扩展的分布式训练。 用户可以将HuggingFace、Dee…

宜选影票api接口如何申请密钥和授权呢?

宜选影票API接口的密钥申请和授权过程一般包括以下步骤&#xff0c;以下将按照清晰的格式分点表示和归纳相关信息&#xff1a; 注册开发者账号&#xff1a; 前往宜选影票的官方网站或开发者平台。注册一个开发者账号&#xff0c;填写必要的个人信息和联系方式。申请API访问权限…

二刷算法训练营Day22 | 二叉树(8/9)

目录 详细布置&#xff1a; 1. 235. 二叉搜索树的最近公共祖先 2. 701. 二叉搜索树中的插入操作 3. 450. 删除二叉搜索树中的节点 详细布置&#xff1a; 1. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共…