零基础学python之高级编程(1)---面向对象编程及其类的创建
面向对象编程及其类的创建
文章目录
- 面向对象编程及其类的创建
- 前言
- 一、面向过程编程和面向对象编程的概念
- 1.面向过程编程(Procedural Programming)
- 2.面向对象编程(Object-Oriented Programming,OOP)
- 二、面向对象编程基础
- 1.初识类(class)和对象
- 调用方法
- 2.类中的两种特殊方法(init,str)
- 1.init方法
- 2.str方法
- 3.类名称空间与对象的名称空间(命名空间)
- 总结
前言
大家好,从今天开始我们一起来进入python中的高级编程篇,我将会讲解比基础篇更加难的面向对象编程,并发编程,进程线程等等一些列的语法及其使用.
今天我们来讲解一下什么是面向对象编程,应该怎么创建一个类及其实例化一个对象或者说属性呢?
一、面向过程编程和面向对象编程的概念
1.面向过程编程(Procedural Programming)
面向过程编程: 核心是过程.就像工厂中的的流水线,按照指定步骤和流程,通过程序划分成一系列的函数,每个函数负责完成一个任务,最终通过函数的调用实现功能,适合那种一旦完成不需要变动的环境,用函数对数据进行操作。
面向过程编程的优点是简单直观,便于理解和掌握。
2.面向对象编程(Object-Oriented Programming,OOP)
面向对象编程: 核心是对象.世间万物都是对象,我们可以随意的创建我们想要的对象,对象是由数据和操作数据的方法封装起来形成一个对象,每个对象都有自己的属性和功能.实现对象交互产生结果.
面向对象编程的三要素: 1,封装(Encapsulation) 2继承(Inheritance) 3多态(Polymorphism)
面向对象编程的优点是可以提高代码的可重用性、灵活性和扩展性
以上就是我们常说的两种编程范式.
二、面向对象编程基础
1.初识类(class)和对象
类:—>就是具有相同特征的一类事物.
对象/实例:—>就是具体的一个事物
实例化:—>将一个类到实例的一个过程.
在python中,我们可以这样理解,用变量表示特征,用函数表示技能,具有相同特征和技能的一类事物就是类,对象就是这一类事物中的具体的一个.
创建一个类语法:
class Person:#定义一个person的类role = '人类'#属性def Walk(self):#定义Person类中的walk方法print('人在走')
在面向对象编程中,类中的变量通常被称为属性,函数通常被称为方法。
我们在定义一个类中类名的首字母大写
调用方法
class Person:#定义一个person的类role = '人类'#属性def Walk(self):#定义Person类中的walk方法print('人在走')
print(Person.role)
print(Person.Walk)
运行结果:

这里面我们print()输出类中的属性,会打印出属性的结果,而打印类中的方法,会显示类中方法的的内存地址.
现在,我们要调用一个类,我们要先将类实例化,然后才能调用.
语法:
实例化:--->类名()用一个变量进行接收类的实例化,然后调用当中的方法class Person:#定义一个person的类role = '人类'#属性def Walk(self):#定义Person类中的walk方法print('人在走')p = Person()#实例化p.Walk()#调用people.Walk方法
运行结果:

这样我们就调用了类中的walk方法.
注意:
调用类中方法需要先将类实例化,然后再进行调用其中方法
2.类中的两种特殊方法(init,str)
1.init方法
1.__init__方法是一个特殊的方法,用于在创建对象时进行初始化操作。它在对象被创建时自动调用,并可以用来设置对象的属性值或执行其他必要的操作。__init__方法可以接受其他参数,可以用来初始化对象的属性。
以下代码演示init的使用方法:
class Person:def __init__(self, name, age): # 传入两个参数self.name = name # 初始化name属性self.age = age # 初始化age属性def speak (self):print(f'你好,我叫{self.name},我今年{self.age}岁')p = Person('仁泽',20)#实例化Person类并且传入参数对象
p.speak()#调用类中speak方法
运行结果:
你好,我叫仁泽,我今年20岁
2.str方法
2.__str__方法也是一个特殊的方法,用于返回对象的字符串表示。它在调用内置的str()函数时自动调用,并且应该返回一个可读性好的字符串,用于描述对象的信息。通常情况下,__str__方法会返回一些有关对象内部状态的信息,以便进行调试和输出。
class Person:def __init__(self, name, age): # 传入两个参数self.name = name # 初始化name属性self.age = age # 初始化age属性def speak (self):print(f'你好,我叫{self.name},我今年{self.age}岁')def __str__(self):return '你好'p = Person('仁泽',20)#实例化Person类并且传入参数对象
# p.speak()#调用类中speak方法
print(p)
运行结果:

我们使用print()打印实例化的类名,会自动输出出str方法中的返回值
3.类名称空间与对象的名称空间(命名空间)
创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字.这些名字称为类的属性.
创建一个对象会创建一个对象的名称空间,用来存储对象的名字.
在对象名.属性名会从对象自己的名称空间找属性,找不到则去类中找,类也找不到就去父类,最后找不到抛出异常.
总结
今天我们学习了面向过程编程与面向对象编程的区别,也学习了python类中的两种特殊方法__init____str__ 的使用方法,下次我们来学习面向对象编程的三个特性.
讲的不好,多多见谅,我们下次再见!
更多优质文章点这里
相关文章:
零基础学python之高级编程(1)---面向对象编程及其类的创建
面向对象编程及其类的创建 文章目录 面向对象编程及其类的创建前言一、面向过程编程和面向对象编程的概念1.面向过程编程(Procedural Programming)2.面向对象编程(Object-Oriented Programming,OOP) 二、面向对象编程基础1.初识类(class)和对象调用方法 2.类中的两种…...
[C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
问题描述 WPF中DataGrid的选中行或选中者单元格,在焦点失去后,颜色会很淡,很不明显,不容易区分。 解决方法 在失去焦点的情况下,如何设置行或单元格与选中的时候颜色一样? <DataGrid.Resources>&…...
单片机学习笔记---串口通信(1)
目录 通信的基本概念 通信的方式 1.按照数据传送的方式,可分为串行通信和并行通信。 1.1串行通信 1.2并行通信 2.按照通信的数据同步方式,又可以分为异步通信和同步通信。 2.1 异步通信 2.2同步通信 3.按照数据的传输方向,又可以分为…...
熔断机制解析:如何用Hystrix保障微服务的稳定性
微服务与系统的弹性设计 大家好,我是小黑,在讲Hystrix之前,咱们得先聊聊微服务架构。想象一下,你把一个大型应用拆成一堆小应用,每个都负责一部分功能,这就是微服务。这样做的好处是显而易见的,更新快,容错性强,每个服务可以独立部署,挺美的对吧?但是,问题也随之而…...
第三节 zookeeper基础应用与实战2
目录 1. Watch事件监听 1.1 一次性监听方式:Watcher 1.2 Curator事件监听机制 2. 事务&异步操作演示 2.1 事务演示 2.2 异步操作 3. Zookeeper权限控制 3.1 zk权限控制介绍 3.2 Scheme 权限模式 3.3 ID 授权对象 3.4 Permission权限类型 3.5 在控制台…...
C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现
前言 我们开发的tcp客户端程序在连接服务器以后,经常会遇到服务器已经关闭但是作为客户端的我们不知道,这时候应该应该有一个机制我们可以实时监测客户端和服务器已经断开连接,如果已经断开了连接,我们应该及时报警提示用户客户端和服务器已经断开连接,本文介绍三种可以监…...
vulnhub-->hacksudo-Thor靶机详细思路
目录 1. IP探测2.端口服务扫描3.网站漏洞扫描4.目录扫描5.信息分析6.破壳漏洞(Shellshock)nmap---漏洞检测CVE-2014-6271 7.nc反弹8.提权9.service提权 1. IP探测 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 19…...
Java外卖小程序管理系统
技术架构: springboot ssm mysql redis 有需要该项目的小伙伴可以私信我你的Q。 功能描述: 商品管理:新增商品、所有商品 菜单管理:菜单管理、菜单分类 订单管理:订单总览(包括未付款、已付款、已…...
挖掘嵌入式系统在物联网和智能设备中的应用潜力
1. 物联网的发展和嵌入式系统 介绍物联网的定义和特点,以及其在各个领域中的应用。探讨物联网对嵌入式系统的需求,包括低功耗、小型化、实时性等特性,以及对嵌入式系统的数据处理和通信能力的要求。 2. 嵌入式系统在智能设备中的应用 分析…...
用docker 配置scala spark环境
要使用Docker配置Scala和Spark环境,您可以按照以下步骤进行操作。以下是一个基本的示例,您可能需要根据您的具体需求进行调整。 安装Docker: 在您的系统上安装Docker。您可以从Docker官方网站下载并安装适用于您操作系统的版本。 创建Dockerfile: 在您的…...
医疗处方架构设计和实现的实战经验总结
医疗处方是医生开具给患者的药物治疗建议。在现代医疗系统中,设计和实现一个高效而可靠的医疗处方架构至关重要。本文将介绍医疗处方架构的设计原则和关键组件,以及如何实现一个可扩展和安全的处方管理系统。 内容: 1. 引言 - 医疗处方的…...
专业140+总分410+华南理工大学811信号与系统考研经验华工电子信息与通信,真题,大纲,参考书。
23考研已经落幕,我也成功的上岸华工,回首这一年多的历程,也是有一些经验想和大家分享一下。 首先说一下个人情况,本科211,初试成绩400分。专业课140。 整体时间安排 对于考研,很重要的一环就是时间安排&…...
软件测试学习笔记-测试用例的编写
7中测试分类 按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试 单元测试:针对源代码的测试 集成测试:针对接口进行测试 系统测试:针对功能和非功能的测试 验收测试:公测、内测…...
『运维备忘录』之 Kubernetes(K8S) 常用命令速查
一、简介 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用。kubernetes是基于容器技术的分布式架构解决方案,具有完备的集群管理能力&a…...
Android SDK 上传 Maven 喂奶级教程
最近领导给安排了个任务,让我把我们现有的一个 SDK 上传到 Maven 上去,方便客户直接用 gradle 依赖,不再需要拷贝 jar 和 so 了,此前我也看过一些相关的文章我想问题也不大,觉得工作量也就一两天的事情,主要…...
R语言绘图教程 | 双侧条形图绘制教程
写在前面 双侧条形图在我们的文章中也是比较常见的,那么这样的图形是如何绘制的呢? 以及它使用的数据类型是什么呢? 这些都是我们在绘制图形前需要掌握的,至少我们知道绘图的数据集如何准备,这样才踏出第一步。 今天的教程,我们会从数据的准备,以及数据如何整理,以及…...
ubuntu篇---ubuntu安装python3.9
ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1:使用apt在线安装 1.更新软件包列表并安装必备组件: $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…...
git初始化一个远程空仓库
目录 1. 仅做简单初始化2. 推送现有的非仓库文件夹3. 推送现有的仓库 git初始化一个远程空仓库主要有以下三种途径: 仅做简单初始化,例如添加 README.md 和 .gitignore。将现有的文件夹(非仓库)推送到远程仓库。将现有的仓库推送…...
装箱问题+宠物小精灵之收服+数字组合——01背包
一、装箱问题 (裸题) 有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。 要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入 第一行是一个整数 V (0 < V ≤ 20000)&…...
记一次页面接口502问题:“502 Bad Gateway”
接收别人的项目进行迭代,项目部署到服务器上之后,有一个接口数据刷不出来,一直502 后来联想到网关的问题,想通过设置白名单的方式解决,设置之后依旧不行。 查看nginx日志发现报错: *169 connect() failed …...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
