惬意上手python —— python中的术语及案例解析

news2024/11/15 17:48:59

面向对象编程

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将数据和操作数据的方法封装在一起,以对象的形式表示。在Python中,一切皆为对象,因此Python是一种面向对象的语言。

类是面向对象编程的基本概念,它是一种用户自定义的数据类型。类定义了一组属性和方法,用于描述该类的对象。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

上面的代码定义了一个名为Person的类,它有两个属性(name和age)和一个方法(say_hello)。属性是类的数据成员,方法是类的函数成员。

实例

实例是类的具体化,也可以称作对象,它是类的一个具体实现。例如:

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

上面的代码创建了两个Person类的实例,分别是person1和person2。

初始化方法

初始化方法是类的特殊方法,是类的魔法方法之一,它在创建类的实例时被调用,即无序调用,自动执行。它用于初始化类的属性。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

上面的代码定义了一个名为__init__的初始化方法,它有两个参数(name和age),用于初始化Person类的属性。

魔法方法

魔法方法是Python中的特殊方法,它们以双下划线开头和结尾。它们用于实现类的特殊行为。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
	# 用于且只能返回字符串
    def __str__(self):
        return f"{self.name} ({self.age})"

上面的代码定义了一个名为__str__的魔法方法,它用于返回Person类的字符串表示。

字符串方法

字符串方法是类的方法之一,它用于返回类的字符串表示。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name} ({self.age})"

上面的代码定义了一个名为__str__的字符串方法,它用于返回Person类的字符串表示。

self

self是Python中的特殊变量,它用于引用类的实例。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

上面的代码中,self用于引用Person类的实例。
简单说,self就是在创建对象时,对象本身。下面的代码可以直接说明:

class Student:
    def __init__(self, name, age):
        print("初始化对象")
        print("self的id:", id(self))
        self.name = name
        self.age = age


s1 = Student("秀", 21)
print("s1的id:", id(s1))

s2 = Student("飞", 22)
print("s2的id:", id(s2))

输出结果:
在这里插入图片描述
上面的代码分别打印了self和实例的id,你会发现执行了两次,那是因为每创建一个对象,就会调用一次对应的类。并且self的id和实例的id时一模一样的!

数据、属性、操作、行为

在面向对象编程中,数据是类的属性,操作是类的方法,行为是类的特殊行为。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

上面的代码中,name和age是Person类的数据,say_hello是Person类的操作,__str__是Person类的行为。

父类、基类、超类

父类、基类、超类是面向对象编程中的术语,它们用于描述类之间的关系。父类是一个类,它被其他类继承。子类是一个类,它继承自另一个类。基类和超类是父类的同义词。

子类、派生类

子类、派生类是面向对象编程中的术语,它们用于描述继承关系。子类是一个类,它继承自另一个类。派生类是子类的同义词。
并且子类可以继承父类的属性和方法:

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print("汪汪")


class Dog(Animal):
    def __init__(self, name, age):
        Animal.__init__(self, name)
        self.age = age

    def eat(self):
        print("啃骨头")


class DogChild(Dog):
    def __init__(self, name, age, color):
        Dog.__init__(self, name, age)
        self.color = color


dog = DogChild("小汪汪", 2, "black")
dog.speak()
dog.eat()

上面的代码DogChild类继承了Dog类,而Dog类继承Animal类,并且你会发现你会发现创建的DogChild的实例可以使用DogChild类中没有声明的speak和eat方法。

多态

多态是面向对象编程中的术语,它用于描述同一操作作用于不同的对象上时,产生不同的结果。在Python中,多态是一种自然而然的现象,因为Python是一种动态类型语言。
简单说就是同一函数可以被不同类型的不同对象调用。

重载多态

重载多态是面向对象编程中的术语,它用于描述同一操作作用于不同类型的参数时,产生不同的结果。在Python中,重载多态是一种自然而然的现象,因为Python是一种动态类型语言。
也就是同一函数有不同的参数。

重写多态

重写多态是面向对象编程中的术语,它用于描述子类重写父类方法的现象。在Python中,重写多态是一种自然而然的现象,因为Python是一种动态类型语言。

实例属性

实例属性是类的属性之一,它是实例的数据成员。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

上面的代码中,name和age是Person类的实例属性。

实例方法

实例方法是类的方法之一,它是实例的函数成员。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

上面的代码中,say_hello是Person类的实例方法。

类属性

类属性是类的属性之一,它是类的数据成员。例如:

class Person:
    count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.count += 1

上面的代码中,count是Person类的类属性。

类方法

类方法是类的方法之一,它是类的函数成员。例如:

class Person:
    count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

上面的代码中,get_count是Person类的类方法,需要用@修饰,而@classmethod就代表类方法。

静态方法

静态方法是类的方法之一,它是类的函数成员。它与类和实例无关,因此可以在不创建实例的情况下调用。例如:

class Math:
    @staticmethod
    def add(x, y):
        return x + y

上面的代码中,add是Math类的静态方法。你会发现add函数前面有一个**@staticmethod**,其实就是装饰器的原理。

🆗,文章到此结束,如果觉得对你有帮助,可以给个关注,持续更新中🌹🌹🌹
在这里插入图片描述

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

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

相关文章

【开源】SpringBoot框架开发天然气工程运维系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司(施工单位)功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

带自执行安装脚本的ROS包的生成

带自执行安装脚本的ROS包的生成 在打包和安装ROS包时, 会有一些固定的配置需要去人为实现, 比如网络配置, 设备树的管理等, 比较麻烦, 不如一次性解决掉, 所以查了相关文档 过程: # 使用bloom-generate rosdebian生成debian文件夹 bloom-generate rosdebian # 进入debian文件…

Unix/Linux上的五种IO模型

a.阻塞 blocking 调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停的去检查这个函数有没有返回,必须等这个函数返回才能进行下一步动作。 注意:阻塞并不是函数的行为,而是跟文件描述符有关。通…

法律视角下的数据出境《2023年数据出境合规年鉴》

关注国际云安全联盟CSA公众号,回复关键词“数据安全”获取报告 在全球数字产业以及大数据和云计算技术快速发展的背景下,数据流动对世界经济的影响日益显著。由此带来的数据红利和数据安全之间的冲突,将对未来数字经济的发展方向产生深刻影响…

如何使用wireshark解析二进制文件

目录 目录 1.将已有的packet raw data按照下面格式写入文本文件中 a. Raw IP packet b. Ethernet packet 2.用wiershark导入hex文件 3.设置对应的packet类型 a. Raw IP packet b. Ethernet packet 1.将已有的packet raw data按照下面格式写入文本文件中 a. Raw IP pac…

C++——特殊类

特殊类 文章目录 特殊类一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象方案一:析构函数私有化方案二:构造函数私有化 三、请设计一个类,只能在栈上创建对象四、请设计一个类,不能被继承五…

交叉注意力融合2024创新方案汇总,附配套模块和代码

多模态学习和注意力机制是当前深度学习研究的热点领域之一,而交叉注意力融合作为这两个领域的结合点,具有很大的发展空间和创新机会。 作为多模态融合的一个重要组成部分,交叉注意力融合通过注意力机制在不同模块之间建立联系,促…

【网络】:网络套接字(TCP)

网络套接字(TCP) 一.编写TCP服务器二.编写Tcp客户端三.多进程四.多线程版本五.线程池版完整源代码六.使用示例 一.编写TCP服务器 1.先搭一个架子 2.创建sockfd domain参数依然是AF_INET(因为是IPV4) type方式选择SOCK_STREAM(提供可靠的连接…

记一次某竞赛中的渗透测试(Windows Server 2003靶机漏洞)

靶机简介 Windows Server 2003是微软公司于2003年3月28日发布的服务器操作系统,它基于Windows XP/Windows NT 5.1进行开发,并在同年4月底上市。以下是关于Windows Server 2003的详细介绍: 系统名称与发布历程: 该产品最初被命名为…

Gaussian_Splatting 项目脚本指令

准备好一个稀疏重建的目录(如Colmap的sparse文件),高斯泼溅需要稀疏重建的点云结果来作为输入,进行进一步训练和渲染。 可以参考:gaussian-splatting原理 有一点需要注意:Gaussian_Splatting 需要稀疏重建…

力扣之2621.睡眠函数

/*** param {number} millis* return {Promise}*/ async function sleep(millis) {return new Promise(resolve > setTimeout(resolve, millis)); }/** * let t Date.now()* sleep(100).then(() > console.log(Date.now() - t)) // 100*/ 这样的异步休眠功能在实际应用…

vue中使用html2canvas配合jspdf导出pdf(以及在导出时遇到的导出样式问题)

指定页面中导出为pdf格式并打包,使用html2canvas先转为图片格式,在利用jspdf转为pdf,最后下载打包为本地压缩包 yarn add html2canvas yarn add jspdf1. 注册一个插件并挂载 import html2Canvas from html2canvas import JsPDF from jspdf …

【零基础学习CAPL】——CAN报文的发送(配合Panel面板单次发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建2.1.新建一个Panel2.2. 在Panel中调出控件窗口2.3.控件添加与配置 3.系统变量创建4.系统变量与Panel绑定5.CAPL脚本实现6.效果 1.概述 使用场景,按下面板按钮同时…

人工智能与机器学习——开启智能时代的里程碑

写在前面 前言人工智能与机器学习的概述监督学习、无监督学习和强化学习的基本原理监督学习:无监督学习:强化学习: 机器学习的算法和方法常见的机器学习算法和方法线性回归:决策树:支持向量机:神经网络&…

个人多域名SSL证书推荐

SSL数字证书和通配符SSL证书、多域名通配符SSL证书一样,可以同时保护多个域名站点,但是它们之间还是存在一些区别。其中,最明显的区别就是它们的保护域名网站的类型和适用场景。今天就随SSL盾小编来了解多域名SSL证书。 1.多域名SSL证书可以…

【C/C++】深入理解--函数重载(什么是函数重载?为什么要有函数重载?)

目录 一、前言 二、 函数重载 🍎什么是函数重载 🍐函数重载的条件 🍇函数重载的注意点 🍉为什么要有函数重载 🍓为何C语言不支持函数重载,反倒C可以? 💦 Linux环境下演示函数重…

云纱网签约百望云,联手打造数字化产业闭环

近日,百望云签约广东云纱数字科技有限公司,共建数字化发票管理系统,赋能产业链上下游供应商的协同交易与运营,助力企业实现数字化四流合一交易,打造数字化产业闭环。 云纱网是广东云纱数字科技有限公司依托于深厚的产业…

Halcon 几何测量

文章目录 算子Halcon 计算两点之间的距离案例Halcon 计算点到直线的距离Halcon 计算点到区域的距离Halcon 线到区域的距离Halcon 线到线的距离 算子 distance_pp 两点之间的距离算子 distance_pp( : : Row1, Column1, Row2, Column2 : Distance) Row1 点1的行坐标 Column1 点1的…

Django视图函数技巧,从入门到实战

文章目录 Django视图函数1.request对象的方法2.视图函数的常用的返回对象(1)response对象(2)JsonResponse对象(3)redirect() :给浏览器了一个30x的状态码 3.设置响应头和状态码(1&am…

【Vue】前端项目引入阿里图标

【Vue&React】前端项目引入阿里图标 方式11、登录自己的iconfont-阿里巴巴矢量图标库,把需要的图标加入到自己的项目中去;2、加入并进入到项目中去选择Font class 并下载到本地3、得到的文件夹如下4. 把红框中的部分粘贴到自己的项目中( …