Python 类

文章目录

  • 定义
  • 类与对象
  • 成员方法
  • 构造方法
  • 魔术方法
  • 私有成员
  • 继承
    • 复写父类成员
    • 调用父类成员
  • 多态

定义

class 类名:成员变量成员方法变量=类名()# 创建对象
变量.成员变量# 使用成员变量
变量.成员方法

类与对象

类相当于设计图纸,规定了各种属性与行为。
对象也就是按照类所实现的实例,对象完成具体的工作。

成员方法

语法:参数列表中有一个self关键字,是必须填写的。用于表示类对象自身
在方法内部,若要访问成员变量与调用成员函数,则需要通过self来访问
在调用成员方法时,self由python自动传入,不用手动传入。

def 方法名(self,参数1...):方法体

构造方法

构造对象时,会自动调用。类会默认存在一个无参的构造函数。
注意:若实现了构造函数,则默认的无参构造函数将不存在。
前后为两个下划线。

def __init__(self,参数):方法体

魔术方法

定义:python类内置的方法,如__init__
常用的魔术方法:
在这里插入图片描述

__str__字符串方法:控制类转换为字符串的行为。
在不使用__str__时,print(类对象)输出的是该对象的内存地址

class Example:x=Noney=Nonedef __init(self,x,y):self.x=xself.y=ydef __str__(self):# 控制类转换为字符串的行为return f"x={self.x}, y={self.y}"
ex=Example(1,2)
print(ex)# 输出 x=1, y=2
print(str(ex))

lt 小于符号比较方法:控制类之间比较大小的行为,类似C++中重载<与>运算符
实现了__it__方法,即可同时完成:小于符号与大于符号

class Example:x=Noney=Nonedef __init__(self,x,y):self.x=xself.y=ydef __lt__(self,other):# 控制小于符合,other为右边的类对象return self.x<other.x# 按照x的大小
ex1=Example(1,2)
ex2=Example(2,3)
print(ex1<ex2)# True
print(ex1>ex2)# False 大于号也可以

le 小于等于比较符号方法,可用于<=, >=。类似C++中重载<=与>=

class Example:x=Noney=Nonedef __init__(self,x,y):self.x=xself.y=ydef __le__(self,other):# 控制小于等于符号,other为右边的类对象return self.x <= other.x# 按照x的大小
ex1=Example(1,2)
ex2=Example(2,3)
print(ex1<=ex2)# True
print(ex1>=ex2)# False 大于等于比较符号

eq 等于运算符方法,用于 ==,类似C++中重载 ==。
若没有__eq__方法,则==比较的是两个类对象的内存地址是否相同

class Example:x=Noney=Nonedef __init__(self,x,y):self.x=xself.y=ydef __eq__(self,other):# 控制等于符号,other为右边的类对象return self.x==other.x# 按照x的大小
ex1=Example(2,2)
ex2=Example(2,3)
print(ex1==ex2)# True

私有成员

在成员变量或成员方法前面增加两个下划线即可。私有成员可以被类内的其他成员访问,注意调用时不要漏了下划线。

class Example:__x=None # 私有成员变量def __setX(self,x):# 私有成员方法self.__x=xdef getX(self,x):self.__setX(x)return self.__xex=Example()
# ex.__x # 报错
# ex.__setX(x) # 报错
ex.getX(x)

继承

class 子类名(父类名1,父类名2...)类体

若多个父类中,存在同名的成员,则优先从左到右递减,先继承的保留,后继承的被覆盖。

class Shape:x=Noney=Nonedef __init__(self,x,y):self.x=xself.y=yclass Circle(Shape):R=Nonedef __init__(self,x,y,R):self.x=xself.y=yself.R=R		

复写父类成员

在子类定义同名的成员变量或成员方法即可

调用父类成员

有两种方法:
① 使用父类名:
父类名.成员变量或成员方法**(self)** # 注意要传入self

② 使用super()调用
super().成员变量或成员方法() # 注意不要传入self

class Shape:x=0y=0def __init__(self,x,y):self.x=xself.y=ydef getPlace(self):return self.x,self.yclass Circle(Shape):R=0def __init__(self,x,y,R):super().__init__(x,y)# 调用父类构造函数self.R=Rdef getPlace(self):# 重写父类方法print(self.name,Shape.name)# 调用父类的成员变量return Shape.getPlace(self)# 调用父类方法

多态

使用不同的对象时,会得到不同的状态。
多态经常在继承中使用,使用父类对象来控制子类对象,在C++中有更加严格的使用。
如:
函数中的形参注解为父类,调用时传入子类对象。根据传入对象的子类不同,执行不同的操作。

class Animal:def speak(self):passclass Dog(Animal):def speak(self):print("汪")class Cat(Animal):def speak(self):print("喵")def F(animal: Animal):  # 多态,animal注解为父类animal.speak()  # 根据传入对象所属的子类来执行对应子类中的方法animal1 = Dog()
animal2 = Cat()
F(animal1)# 传入子类对象
F(animal2)

抽象方法:
方法体为空实现(pass)的方法,如Animal中的speak方法。
子类必须重写父类中的抽象方法,不然对于子类来说,抽象方法等于不存在。

抽象类(接口):
包含抽象方法的类。
用于顶层设计(设计标准),便于子类的实现。
对子类的一种软性约束

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

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

相关文章

(单机架设教程)3D剑踪

前言 今天给大家带来一款单机游戏的架设&#xff1a;3D剑踪 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 3D剑踪 搭建教程 此游戏架设不需要虚拟机&#xff0c; 我们先解压 “3D剑踪.zip” &…

因果解耦表征 | (香港理工ICLR24)联合学习个性化因果不变表示以应对异构联邦客户端

原文&#xff1a;Learning Personalized Causally Invariant Representations for Heterogeneous Federated Clients 地址&#xff1a;https://openreview.net/forum?id8FHWkY0SwF 代码&#xff1a;未知 出版&#xff1a;ICLR 2024 机构: 香港理工大学、香港科技大学 解读&…

JAVA期末速成库(12)第十三章

一、习题介绍 第十三章 Check Point&#xff1a;P501 13.3&#xff0c;13.17&#xff0c;13.28&#xff0c;13.29 Programming Exercise&#xff1a;13.1&#xff0c;13.6&#xff0c;13.11 二、习题及答案 Check Point&#xff1a; 13.3 True or false? a. An abst…

Nature Climate Change | 中国科学院地理资源所吴朝阳课题组发表生物多样性调控植被物候的研究成果!

本文首发于“生态学者”微信公众号&#xff01; 植被春季物候对气候变化的响应通常是通过测量其温度敏感性&#xff08;ST&#xff0c;温度每升高1度&#xff0c;植被提前展叶的天数&#xff09;来量化。ST是植被在当地历史气候环境的选择压力下演化形成的最优策略&#xff0c;…

如何在Ubuntu20上离线安装joern(包括sbt和scala)

在Ubuntu 20上离线安装Joern&#xff0c;由于Joern通常需要通过互联网从其官方源或GitHub等地方下载&#xff0c;但在离线环境中&#xff0c;我们需要通过一些额外的步骤来准备和安装。&#xff08;本人水平有限&#xff0c;希望得到大家的指正&#xff09; 我们首先要做的就是…

在QGIS中调用天地图

2019年 1月 1日起&#xff0c;天地图 API及服务接口调用需要获得开发授权&#xff0c;之前使用 QGIS等 GIS软件无法继续调用天地图&#xff0c;这就需要申请一个许可。 一、注册并申请 Key 具体申请可以登录如下地址&#xff1a;https://www.tianditu.gov.cn打开上述网址后点…

工厂方法模式:概念与应用

目录 工厂方法模式工厂方法模式结构工厂方法适合的应用场景工厂方法模式的优缺点练手题目题目描述输入描述输出描述**提示信息**解题&#xff1a; 工厂方法模式 工厂方法模式是一种创建型设计模式&#xff0c; 其在父类中提供一个创建对象的方法&#xff0c; 允许子类决定实例…

SQLite3的使用

14_SQLite3 SQLite3是一个嵌入式数据库系统&#xff0c;它的数据库就是一个文件。SQLite3不需要一个单独的服务器进程或操作系统&#xff0c;不需要配置&#xff0c;这意味着不需要安装或管理&#xff0c;所有的维护都来自于SQLite3软件本身。 安装步骤 在Linux上安装SQLite…

《概率论与数理统计》期末复习笔记_下

目录 第4章 随机变量的数字特征 4.1 数学期望 4.2 方差 4.3 常见分布的期望与方差 4.4 协方差与相关系教 第5章 大数定律和中心极限定理 5.1 大数定律 5.2 中心极限定理 第6章 样本与抽样分布 6.1 数理统汁的基本概念 6.2 抽样分布 6.2.1 卡方分布 6.2.2 t分布 6.…

Winform使用HttpClient调用WebApi的基本用法

Winform程序调用WebApi的方式有很多&#xff0c;本文学习并记录采用HttpClient调用基于GET、POST请求的WebApi的基本方式。WebApi使用之前编写的检索环境检测数据的接口&#xff0c;如下图所示。 调用基于GET请求的无参数WebApi 创建HttpClient实例后调用GetStringAsync函数获…

技术打包 催化剂浸渍制作方法设备

网盘 https://pan.baidu.com/s/1Bybbyy5qEA2uTUlaELmWwg?pwdepdk 改性加氢处理催化剂载体、催化剂及其制备方法和应用.pdf 水滑石基催化剂在高浓度糖转化到1,2-丙二醇中的应用.pdf 海泡石负载铁锰双金属催化剂及其制备方法和应用.pdf 甘油氢解催化剂及其制备方法和应用.pdf 用…

【原理】机器学习中的最小二乘法公式推导过程

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是最小二乘法1.1. 什么是最小二乘法1.2. 最小二乘法的求解公式 二、最小二乘法求解公式的推导 最小二乘法是基本的线性求解问题之一&#xff0c;本文介绍最小二乘法的原理&#xff0c;和最小二法求解公式…

【Vue】Vue3基础

VUE3基础 1、简介2、创建工程2.1 基于vue-cli创建&#xff08;脚手架webpack&#xff09;2.2 基于vite创建&#xff08;推荐&#xff09;2.3 目录结构2.4 vscode插件推荐 3、核心语法3.1 选项式&#xff08;options API&#xff09;和组合式&#xff08;composition API&#x…

Arduino - LED 矩阵

Arduino - LED 矩阵 Arduino - LED Matrix LED matrix display, also known as LED display, or dot matrix display, are wide-used. In this tutorial, we are going to learn: LED矩阵显示器&#xff0c;也称为LED显示器&#xff0c;或点阵显示器&#xff0c;应用广泛。在…

scatterlist的相关概念与实例分析

概念 scatterlist scatterlist用来描述一块内存&#xff0c;sg_table一般用于将物理不同大小的物理内存链接起来&#xff0c;一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…

纯硬件FOC驱动BLDC

1. 硬件FOC 图 1 为采用 FOC 的方式控制 BLDC 电机的过程&#xff0c;经由 FOC 变换( Clark 与 Park 变换) &#xff0c;将三相电流转换为空间平 行电流 ID 与空间垂直电流 IQ。经过 FOC 逆变化逆( Clark 变换与逆 Park 变换) &#xff0c;将两相电流转换为三相电流用于控 制电…

喜茶新品被迫更名,内容营销专家刘鑫炜谈品牌定位敏锐度和适应性

喜茶&#xff0c;作为茶饮界的知名品牌&#xff0c;一直以其独特的创意和优质的产品受到消费者的喜爱。然而&#xff0c;近期喜茶推出的一款新品“小奶栀”却因其名称发音问题引发了不小的争议。 事件回顾 “小奶栀”这款新品在上市之初&#xff0c;以其独特的口感和创新的命名…

气膜结构的年度维护费用解析—轻空间

气膜结构作为一种新型建筑形式&#xff0c;广泛应用于体育场馆、仓储、展览馆等场所。由于其独特的结构特点&#xff0c;气膜建筑的维护工作显得尤为重要。轻空间将详细探讨气膜结构的年度维护费用构成及影响因素&#xff0c;帮助大家全面了解气膜建筑的运营成本。 气膜结构年度…

android studio 添加aar包

按着以前旧的导包方式栽了大跟头&#xff0c;后面在留老板的的博客下找到了解决办法&#xff0c;记录一下。 Andriod Studio 导入aar最新的方式_gradle 8 引入arr-CSDN博客 最新导包方式 1.在新建libs目录&#xff0c;在app/libs目录下导入aar包&#xff08;其实就是拷贝过去…

揭秘品牌推广的制胜之道:步骤、流程、方法与技巧全攻略!

品牌推广是现代营销战略中的核心环节&#xff0c;对于提升品牌知名度、塑造品牌形象以及扩大市场份额具有举足轻重的作用。 作为一名手工酸奶品牌的创始人&#xff0c;目前全国复制了100多家门店&#xff0c;我来为大家分享品牌推广的制胜之道&#xff0c;包括具体步骤、流程、…