Python中类的相关术语(附带案例)

目录

1、面向对象

2、类

3、实例

4、初始化方法

5、魔法方法

6、字符串方法

7、self

8、数据、属性、操作、行为

9、父类、基类、超类  or  子类、派生类

10、多态

11、重载多态  and  重写多态

12、名称解释

1、面向对象

        在Python中,面向对象编程(OOP)是一种非常重要的编程范式。在Python中,可以通过创建类(class)和实例化对象(object)来使用面向对象的编程思想。

        下面是一个简单的例子,People是一个类,__init__方法是一个魔法方法,在创建对象时被调用,用于初始化对象的属性。

class Person:def __init__(self, name):self.name = name# 初始化实例
p1 = Person("小白")
print(p1.name)

2、类

        在Python中,类是一种用来创建对象的蓝图或模板。通过定义类,可以定义对象的属性和方法。

class 关键字用于定义一个类,在类的内部,你可以定义各种属性和方法。

  • 属性(attribute):类的属性是与该类相关联的数据。
  • 方法(method):类的方法是与该类相关联的函数。方法的第一个参数通常是 self,代表对当前对象的引用。

        通过类,可以创建对象的实例,并调用对象的方法来完成相关操作。

class Person:def __init__(self, name):self.name = namedef get_name(self):return self.name# 定义一个实例
p1 = Person("小白")
# 实例拥有属性
print(p1.name)
# 通过实例调用类里面定义的函数方法
print(p1.get_name())

3、实例

        在Python中,实例是由类创建的对象。通过实例,可以使用类中定义的属性和方法。

        在上面的代码中,Person是一个类,p1是 Person类创建的一个实例。通过实例,我们可以使用 Person类中定义的属性和方法。例如,我们可以通过 p1.name 访问实例的 name 属性,并通过 p1.get_name() 调用实例的 get_name方法。

4、初始化方法

        在Python中,初始化方法是一个特殊的方法,用于创建类的实例并初始化实例的属性。初始化方法的名称为 __init__,并且第一个参数通常是 self,代表对当前对象的引用。通过初始化方法,可以在创建对象时设置对象的初始状态。

        在上面的代码中,__init__ 方法被用来初始化实例的 name 属性。在创建实例时,我们传递了 name  参数,并将它们存储在实例的属性中。

        需要注意的是,初始化方法是可选的。如果你没有定义初始化方法,Python会提供一个默认的初始化方法。但通常情况下,你需要自己定义初始化方法来完成对象的初始化工作。

        另外,除了 __init__ 方法外,还有其他一些特殊方法可以用来定制类的行为。这些特殊方法被称为“魔术方法”,例如 __str__ 方法用于定义对象的字符串表示形式,__eq__ 方法用于定义对象的相等性判断等。熟练掌握这些特殊方法可以让你更好地定制类的行为。

5、魔法方法

        在Python中,魔术方法(Magic Methods)是一种特殊的方法,用双下划线 __ 开头和结尾命名的方法。这些方法用于定制类的行为,例如实现对象的比较、转换、算术运算等功能。通过使用魔术方法,可以让类与Python的内置功能更好地集成。

        例如 __str__ 方法用于定义对象的字符串表示形式,__doc__获取类的文档注释。

class Person:"""这里是Person的文档注释"""def __init__(self, name):self.name = namedef get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"p1 = Person("小白")
print(p1)
print(p1.__doc__)

6、字符串方法

        在Python中,类的 __str__() 方法是一种特殊的方法,用于返回对象的字符串表示形式。当打印一个对象或使用 str(obj) 函数时,Python会自动调用该对象的 __str__() 方法来获取其字符串表示。

        上面的示例中,Person 类定义了一个 __init__() 方法来初始化对象的属性,以及一个 __str__() 方法来返回对象的字符串表示。在 __str__() 方法中,我们使用了格式化字符串(f-string)来构建要返回的字符串。

        通过定义 __str__() 方法,我们可以控制对象的字符串表示,使其更有意义和可读性。这在调试和输出对象信息时非常有用。

7、self

        在Python中,self 是一个特殊的参数,用于表示对象实例本身。当你调用类的方法时,Python会自动将对象实例传递给方法的第一个参数,通常被命名为 self

        通过使用 self,可以在类的方法中访问对象的属性和其他方法。在上面的示例中,self 参数被用来访问对象实例的 name 属性。

        总之,self 是Python中用来表示对象实例自身的约定俗成的名称,通过它可以在类的方法中访问对象的属性和方法。

8、数据、属性、操作、行为

        在面向对象编程中,常常使用以下概念来描述类和对象的不同方面:

  1. 数据(Data):数据是类的属性(也称为实例变量),用于表示类的状态和特征。它们存储在对象中,并且每个对象都可以具有不同的数据值。例如,在一个人(Person)类中,年龄(age)和姓名(name)可以是该类的数据。

  2. 属性(Attribute):属性是类的数据和方法的统称。它们是类和对象的特征,并且可以通过点符号来访问。属性可以是类级别的,被所有对象共享,也可以是对象级别的,每个对象独立拥有自己的属性。

  3. 操作(Operation):操作是类的方法(也称为成员函数),用于执行特定的功能或操作。操作定义了类可以做什么以及如何与对象进行交互。例如,在一个人(Person)类中,say_hello() 可以是一个操作,用于打印出个人问候信息。

  4. 行为(Behavior):行为是对象对外部请求做出的响应。它描述了对象如何根据接收到的消息作出反应。行为由类的方法实现,使对象能够执行某些动作或操作。例如,在一个人(Person)类中,行走(walk)可以是一个行为,用于移动对象的位置。

        这些概念相互关联,共同构成了面向对象编程的基础。数据和属性描述了类和对象的特征,操作和行为描述了类和对象的行为和功能。通过将数据、属性、操作和行为组合在一起,可以创建具有丰富功能和交互能力的类和对象。

9、父类、基类、超类  or  子类、派生类

        在面向对象编程中,一个类可以继承自另一个类,被继承的类称为父类(Parent Class)、基类(Base Class)或超类(Superclass),而继承的类称为子类(Subclass)或派生类(Derived Class)。

class Person:def __init__(self, name):self.name = namedef get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"class Student(Person):def __init__(self, name, age):Person.__init__(self, name)self.age = agedef get_age(self):return self.ages = Student("小白", 25)
# 子类可以调用自己的方法
print(s.get_age())
# 子类调用父类的方法
print(s.get_name())
print(s)

        在上述示例中,Person是父类,Student是子类。子类 Student继承了父类 Person的 __init__()get_name() 方法,并且还定义了自己的 get_age() 方法。

        通过继承,子类可以直接使用父类的属性和方法,并且还可以在子类中添加自己的特定行为。这样可以减少代码的重复,并且使得程序的设计更加灵活和可扩展。

10、多态

        python没有多态 python到处都是多态

        多态是面向对象编程中的一个重要概念,指的是同一操作作用于不同的对象,可以有不同的解释和实现,产生不同的执行结果。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。

        在多态中,子类可以将自己的实例化对象传递给父类的方法,从而实现对父类方法的重载或覆盖。当程序执行时,会根据实际传入的对象类型来决定调用哪个方法,从而实现不同的行为。

class Animal:def __init__(self, name):self.name = namedef sound(self):print("Animal makes a sound")class Dog(Animal):def sound(self):print("Dog barks")class Cat(Animal):def sound(self):print("Cat meows")# 创建Animal、Dog和Cat对象
animal = Animal("Animal")
dog = Dog("Dog")
cat = Cat("Cat")# 调用各自的sound()方法
animal.sound()  # 输出:Animal makes a sound
dog.sound()  # 输出:Dog barks
cat.sound()  # 输出:Cat meows

11、重载多态  and  重写多态

        重载多态(Overloading Polymorphism)和重写多态(Overriding Polymorphism)都是多态性的体现,但它们实现多态性的方式不同。

        重载多态指的是在一个类中定义多个同名方法,但是这些方法的参数类型、个数或顺序不同,从而在调用该方法时根据传入的参数类型、个数或顺序来决定调用哪个方法。重载多态是通过编译期间静态绑定来实现的。

        重写多态指的是子类对父类方法的重写或覆盖,从而使得同样的方法调用对于不同的对象可以产生不同的行为。重写多态是通过运行期间动态绑定来实现的。

12、名称解释

  •         (1)实例属性:在Python中,实例属性是与类的实例相关联的属性,每个类的实例都可以具有不同的实例属性值。实例属性通常在类的构造方法(通常是__init__方法)中定义,并且它们通过self关键字与实例关联。
    •         (2)实例方法:在Python中,实例方法是与类的实例关联的方法,它们通过类的实例调用。实例方法的第一个参数通常是self,它代表调用该方法的实例本身。通过self,实例方法可以访问和操作实例的属性。
      •         (3)类属性:在Python中,类属性是与整个类关联的属性,而不是与类的实例关联。类属性是在类级别上定义的属性,它们在所有类的实例之间共享相同的值。类属性通常在类的顶层定义,而不在任何方法内。
        •         (4)类方法:在Python中,类方法是与类关联而不是与类的实例关联的方法。类方法使用@classmethod装饰器进行定义,并且其第一个参数通常是cls,表示类本身。类方法可以通过类调用,而不需要创建类的实例。
          •         (5)静态方法:在Python中,静态方法是与类关联的方法,但与实例无关。静态方法使用@staticmethod装饰器进行定义,与普通的函数类似,但位于类的命名空间中。静态方法既不需要表示实例的self参数,也不需要表示类的cls参数。
class Person:# 类属性info = "hello"# 类方法@classmethoddef get_cls(cls):return cls.__name__# 静态方法@staticmethoddef get_info():return Person.info# 初始化实例def __init__(self, name):self.name = name# 实例方法def get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"# p1是一个实例
p1 = Person("小白")
# 实例属性
print(p1.name)
# 通过实例调用实例方法
print(p1.get_name())
# 通过类名调用类属性
print(Person.info)
print(Person.get_cls())
print(Person.get_info())

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

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

相关文章

Qt关于qss文件的添加使用

把ui设计得更加的养眼,肯定需要对控件的属性进行设置,qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss(类比html) 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

代码随想录算法训练营第二二天| 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

目录 二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点普通二叉树的删除方式 LeetCode 235. 二叉搜索树的最近公共祖先 LeetCode 701.二叉搜索树中的插入操作 LeetCode 450.删除二叉搜索树中的节点 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到…

windows安装oracle之后怎么连接使用

目录 1.打开SQl Developer 2.选择JDK 3.登录 4.创建表空间,用户 安装oracle的详细教程 WINDOWS安装Oracle11.2.0.4-CSDN博客 1.打开SQl Developer 找到 SQl Developer 2.选择JDK 根据你安装的oracle版本,因为我的oracle是安装的32位的,所以这里jdk也要选择32位 选择到ja…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环,根据迭代式对变量反复赋值。 求近似根(切线法); 迭代描述: x 0 x_0 x0…

Docker核心教程

1. 概述 官网:https://docs.docker.com/ Docker Hub 网站:https://hub.docker.com/ 容器较为官方的解释: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…

Java项目要不要部署在Docker里?

部署Java项目有很多种方式,传统的方式是直接在物理机或虚拟机上部署应用,但为什么现在容器化部署变得越来越流行, 个人觉得原因有以下几个: 1、 环境一致性:使用Docker可以确保开发、测试和生产环境的一致性&#xff…

传感器类总结(一)MPU9250 3-2程序关于IIC的底层程序

关于IIC的逻辑和底层协议可以看之前总结的 #IIC 通信协议 1、读写数据 1.1、写数据 发送N个字节程序的流程: 1、发送起始信号 2、发送从机地址和写 3、等待从机发回应答信号 4、发送第一字节数据 等待应答 5、发送下一字节数据 等带应答或非应答信号 6、发送停止信号停止发送…

D365:Debug

文章目录 前言一、附加进程二、选择进程三、DebugDebug进ApplicationSuite文件方法一方法二 前言 使用 Visual Studio 调试 D365 一、附加进程 点击路径 Debug > Attach to Process 二、选择进程 勾选下面的Show processes from all users,选择w3wp.exe,点击At…

HCIA学习第六天:OSPF:开放式最短路径优先协议

OSPF:开放式最短路径优先协议 无类别链路状态IGP动态路由协议 1.距离矢量协议:运行距离矢量协议的路由器会周期性的泛洪自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习到路由,并且加载进自己的路由表中&#xff1b…

电视盒子哪款好?年货节必看电视盒子排名

电视盒子哪款好?电视盒子是每天都会使用到的,和电视机是好搭档,但很多朋友买电视盒子的时候会踩雷,像虚标配置、偷工减料、无售后等,近来年货节大促购入电视盒子的消费者增多,小编这次要来分享的是好评度最…

centos搭建ftp踩坑记录

ftp服务器搭建参考b站视频 第1坑,开放端口后仍然无法连接: 这里不仅需要在防火墙打开20和21端口,还需要打开被动访问所使用的端口,也就是在配置文件vsftpd.conf中指定的被动访问接收端口。 pasv_enableYES pasv_min_port40000 p…

【Java】Springboot入门

学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发 一、SpringBoot简介 1. 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗? SpringBoot是由Pivotal团队提供的全新框架&…

了解维特比算法:通信系统和自然语言处理中解码的基石

一、介绍 在数字通信和信号处理领域,维特比算法是一种革命性的纠错和解码方法。该算法以 1967 年推出的 Andrew Viterbi 的名字命名,已成为数字通信和自然语言处理领域的基础。本文旨在深入研究维特比算法的复杂性,探讨其理论基础、实际应用以…

跨境电商展-2024广州跨境电商展览会(ICBE China 2024)

ICBE2024第11届广州国际跨境电商交易博览会,作为华南地区最具影响力的跨境电商展览会,将再次于2024年5月15-17日在广州保利世贸展览馆盛大举行。此次展会以“创新、合作、共赢”为主题,汇聚了来自全球各地的跨境电商企业、平台、服务商等&…

(2024,定性评估、定量评估、人类评估)神经风格转移评估:综述

Evaluation in Neural Style Transfer: A Review 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 神经风格转移方法 0. 摘要 神经风格转移(Neural St…

LeetCode.2808. 使循环数组所有元素相等的最少秒数

题目 题目链接 分析 我们最终形成的数组一定是当前数组nums 中的一个数字。 所以我们的想法就是枚举数组 nums 中的所有数字,取最小值。 题目告诉我们每一秒都可以向左右扩散一位,那么多个相同的 x 同时扩散,扩散完整个数组耗时就取决于两…

Django实例_后台管理及分页器

原理步骤参考: Django开发_14_后台管理及分页器-CSDN博客 一、创建Django项目 二、创建page_app python manage.py startapp page_app三、修改settings.py文件 (一)添加app (二)设置每页显示数据个数 (三)设置中文显示 四、总路由添加子路由路径 from django.contrib impo…

最全前端 HTML 面试知识点

一、HTML 1.1 HTML 1.1.1 定义 超文本标记语言(英语:HyperTextMarkupLanguage,简称:HTML)是一种用于创建网页的标准标记语言 HTML元素是构建网站的基石 标记语言(markup language ) 由无数个…

PyTorch深度学习实战(34)——Pix2Pix详解与实现

PyTorch深度学习实战(34)——Pix2Pix详解与实现 0. 前言1. 模型与数据集1.1 Pix2Pix 基本原理1.2 数据集分析1.3 模型构建策略 2. 实现 Pix2Pix 生成图像小结系列链接 0. 前言 Pix2Pix 是基于生成对抗网络 (Convolutional Generative Adversarial Netwo…

pinctrl/gpio子系统(1)-pinctrl子系统介绍及驱动源码分析

1.简介 在如今的驱动开发工作中,实际上已经很少去对着寄存器手册进行驱动开发了,一般板子拿到手,已经有原厂的驱动开发工程师,在gpio子系统、pinctrl子系统中将自家芯片的引脚适配好了。 我们直接基于设备树已配置好的寄存器值&a…