当前位置: 首页 > news >正文

零基础学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的选中行或选中者单元格&#xff0c;在焦点失去后&#xff0c;颜色会很淡&#xff0c;很不明显&#xff0c;不容易区分。 解决方法 在失去焦点的情况下&#xff0c;如何设置行或单元格与选中的时候颜色一样&#xff1f; <DataGrid.Resources>&…...

单片机学习笔记---串口通信(1)

目录 通信的基本概念 通信的方式 1.按照数据传送的方式&#xff0c;可分为串行通信和并行通信。 1.1串行通信 1.2并行通信 2.按照通信的数据同步方式&#xff0c;又可以分为异步通信和同步通信。 2.1 异步通信 2.2同步通信 3.按照数据的传输方向&#xff0c;又可以分为…...

熔断机制解析:如何用Hystrix保障微服务的稳定性

微服务与系统的弹性设计 大家好,我是小黑,在讲Hystrix之前,咱们得先聊聊微服务架构。想象一下,你把一个大型应用拆成一堆小应用,每个都负责一部分功能,这就是微服务。这样做的好处是显而易见的,更新快,容错性强,每个服务可以独立部署,挺美的对吧?但是,问题也随之而…...

第三节 zookeeper基础应用与实战2

目录 1. Watch事件监听 1.1 一次性监听方式&#xff1a;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外卖小程序管理系统

技术架构&#xff1a; springboot ssm mysql redis 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 商品管理&#xff1a;新增商品、所有商品 菜单管理&#xff1a;菜单管理、菜单分类 订单管理&#xff1a;订单总览&#xff08;包括未付款、已付款、已…...

挖掘嵌入式系统在物联网和智能设备中的应用潜力

1. 物联网的发展和嵌入式系统 介绍物联网的定义和特点&#xff0c;以及其在各个领域中的应用。探讨物联网对嵌入式系统的需求&#xff0c;包括低功耗、小型化、实时性等特性&#xff0c;以及对嵌入式系统的数据处理和通信能力的要求。 2. 嵌入式系统在智能设备中的应用 分析…...

用docker 配置scala spark环境

要使用Docker配置Scala和Spark环境&#xff0c;您可以按照以下步骤进行操作。以下是一个基本的示例&#xff0c;您可能需要根据您的具体需求进行调整。 安装Docker: 在您的系统上安装Docker。您可以从Docker官方网站下载并安装适用于您操作系统的版本。 创建Dockerfile: 在您的…...

医疗处方架构设计和实现的实战经验总结

医疗处方是医生开具给患者的药物治疗建议。在现代医疗系统中&#xff0c;设计和实现一个高效而可靠的医疗处方架构至关重要。本文将介绍医疗处方架构的设计原则和关键组件&#xff0c;以及如何实现一个可扩展和安全的处方管理系统。 内容&#xff1a; 1. 引言 - 医疗处方的…...

专业140+总分410+华南理工大学811信号与系统考研经验华工电子信息与通信,真题,大纲,参考书。

23考研已经落幕&#xff0c;我也成功的上岸华工&#xff0c;回首这一年多的历程&#xff0c;也是有一些经验想和大家分享一下。 首先说一下个人情况&#xff0c;本科211&#xff0c;初试成绩400分。专业课140。 整体时间安排 对于考研&#xff0c;很重要的一环就是时间安排&…...

软件测试学习笔记-测试用例的编写

7中测试分类 按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试 单元测试&#xff1a;针对源代码的测试 集成测试&#xff1a;针对接口进行测试 系统测试&#xff1a;针对功能和非功能的测试 验收测试&#xff1a;公测、内测…...

『运维备忘录』之 Kubernetes(K8S) 常用命令速查

一、简介 kubernetes&#xff0c;简称K8s&#xff0c;是用8代替名字中间的8个字符“ubernete”而成的缩写&#xff0c;是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用。kubernetes是基于容器技术的分布式架构解决方案&#xff0c;具有完备的集群管理能力&a…...

Android SDK 上传 Maven 喂奶级教程

最近领导给安排了个任务&#xff0c;让我把我们现有的一个 SDK 上传到 Maven 上去&#xff0c;方便客户直接用 gradle 依赖&#xff0c;不再需要拷贝 jar 和 so 了&#xff0c;此前我也看过一些相关的文章我想问题也不大&#xff0c;觉得工作量也就一两天的事情&#xff0c;主要…...

R语言绘图教程 | 双侧条形图绘制教程

写在前面 双侧条形图在我们的文章中也是比较常见的,那么这样的图形是如何绘制的呢? 以及它使用的数据类型是什么呢? 这些都是我们在绘制图形前需要掌握的,至少我们知道绘图的数据集如何准备,这样才踏出第一步。 今天的教程,我们会从数据的准备,以及数据如何整理,以及…...

ubuntu篇---ubuntu安装python3.9

ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1&#xff1a;使用apt在线安装 1.更新软件包列表并安装必备组件&#xff1a; $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…...

git初始化一个远程空仓库

目录 1. 仅做简单初始化2. 推送现有的非仓库文件夹3. 推送现有的仓库 git初始化一个远程空仓库主要有以下三种途径&#xff1a; 仅做简单初始化&#xff0c;例如添加 README.md 和 .gitignore。将现有的文件夹&#xff08;非仓库&#xff09;推送到远程仓库。将现有的仓库推送…...

装箱问题+宠物小精灵之收服+数字组合——01背包

一、装箱问题 (裸题) 有一个箱子容量为 V&#xff0c;同时有 n 个物品&#xff0c;每个物品有一个体积&#xff08;正整数&#xff09;。 要求 n 个物品中&#xff0c;任取若干个装入箱内&#xff0c;使箱子的剩余空间为最小。 输入 第一行是一个整数 V (0 < V ≤ 20000)&…...

记一次页面接口502问题:“502 Bad Gateway”

接收别人的项目进行迭代&#xff0c;项目部署到服务器上之后&#xff0c;有一个接口数据刷不出来&#xff0c;一直502 后来联想到网关的问题&#xff0c;想通过设置白名单的方式解决&#xff0c;设置之后依旧不行。 查看nginx日志发现报错&#xff1a; *169 connect() failed …...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板&#xff08;BT Panel&#xff09; 是完全可行的&#xff0c;尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎&#xff0c;虽然官方主要面向中国大陆…...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M&#xff08;N ≤ M&#xff09;的矩阵中选出 N 个数&#xff0c;任意两个数字不能在同一行或同一列&#xff0c;求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求&#xff1a;1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...