python:面向对象编程(知识点+代码)

文章目录

  • 一、类和对象
    • 1、对象属性的默认值设置
    • 2、对象属性的添加、修改与删除
    • 3 、类属性
  • 二、类的继承

引言:面向对象编程时一门编程语言重要的功能,我们之前所学的 c++,java都为面向对象编程语言,这里给大家拓展一下,静态编程语言与动态编程语言;

(1)静态编程语言(编译型语言):静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:java,c++,C语言等等。

(2)动态类型语言(解释型语言):在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动态类型语言。很多脚本语言javascrīpt,javascrīpt也是这类语言。

一、类和对象

我们来创建一共Person类,看下方代码:

#定义类,这里注意类目需要首字母大写,用于缺乏其他函数
class Person:
    def __init__(self) : #这里是初始化函数,等同于c++和java里面的构造函数
        self.name="韩信"  #self.name是访问本对象的name,即为每个类里面的属性
        self.gender='男'
        self.age=20
        print("An instance created!")
    
# 代码实例化
p1=Person()  #创建p1对象
print(p1.name)
print(p1.gender)
print(p1.age)

注意:
(1)这里的初始化函数的格式为固定模式:def __init__(self):
(2)括号里面的self是相当于类里面的指针,相似c++里面的this指针,必须要写在里面,如果要在初始化函数形参里面添加其他参数时,即为在self后面加上参数名即可。

1、对象属性的默认值设置

看下面代码:

def __init__(self,name,gender='男',age=20) : 
        self.name="韩信" 
        self.gender='男'
        self.age=20
        print("An instance created!")

这里可以如果无实参的话,则按照默认值输出;

来看一段完整代码:

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender='男',age=20) : 
        self.name='韩信' 
        self.gender=gender
        self.age=age
        print("An instance created!")
    def say(self):#这里需要注意,此功能为输出,则里面仍然要有self参数在里面,便于此函数下面的变量调用
        print('%s, 性别为 %s,年龄为%d。' %(self.name,self.gender,self.age))
    
# 代码实例化
p1=Person('韩信','man')
p1.say()

运行如下:
在这里插入图片描述

Person里面的若给出实参,则覆盖形参给的默认值,否则就直接输出默认值;

2、对象属性的添加、修改与删除

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender='男',age=20) : 
        self.name='韩信' 
        self.gender=gender
        self.age=age
        print("An instance created!")
    def say(self):
        print('%s, 性别为 %s,年龄为%d岁,体重为%d,。' %(self.name,self.gender,self.age,self.weight))
    
# 代码实例化
p1=Person('韩信','man')
p1.age=60 #修改
p1.weight=70 #添加
p1.say()

在这里插入图片描述
这里我们并没有在初始化函数中加入参数,而是直接在实例化处通过对象来添加,修改

现在来看一下删除会显示什么效果?

# 代码实例化
p1=Person('韩信','man')
p1.weight=60
del  p1.weight
p1.say()

在这里插入图片描述
这里显示属性异常,查不到此参数。

3 、类属性

类似其他语言,在python中也有公、私有属性,那么在python语言中如何表示呢?还是publicprivate吗?
在这里插入图片描述
在这里插入图片描述
我们这里将name属性,进行私有化处理,我们在类外在此通过访问时候,即为报错(AttributeError).
大家可以看到箭头处,通过在属性名前面加上"__"(注意,这里是在英文模式两条下划线),这样子就把name属性变成私有属性,当然如果不加,则为公有属性。

二、类的继承

面向对象编程的主要好处之一是可以实现代码的重用,代码重用的方法之一就是继承。
来看个例子:

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender,age) : 
        self.name=name 
        self.gender=gender
        self.age=age
    def say(self):
        print('%s, 性别为 %s,年龄为%d岁.' %(self.name,self.gender,self.age))
class Son(Person):  #格式为  ‘def 子类名(父类名):’
    def __init__(self,name,gender,age,weight) : 
        Person.__init__(self,name,gender,age)
        self.weight=weight
    def say(self):  #对代码的重写
         print('%s, 性别为 %s,年龄为 %d 岁,体重为 %d kg.' %(self.name,self.gender,self.age,self.weight))


# 代码实例化
p1=Person('韩信','男',20)
p2=Son("貂蝉","女",20,60)
p1.say()
p2.say()

在这里插入图片描述
这里需要大家知道一个知识点,不管是java或c++里面的构造函数,还是python里面的初始化函数,题目移动是创建对象时候才会调用(这个是考点)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是CDN加速?CDN加速有哪些作用?

一、什么是 CDN CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是在现有 Internet 基础上增加一层新的网络架构,通过部署边缘服务器,采用负载均衡、内容分发、调度等功能,使用户可以就近访问获取所需内容&#xff…

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测 目录 多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-…

2023年报考CSM敏捷教练认证好不好?含金量高吗?

CSM,Certified Scrum Master,是Scrum联盟发起的Scrum认证。帮助个人从自身、团队和组织层面,学习技能和工具来扩展实践的层面,帮助团队正确使用Scrum,从而提高项目整体成功的可能性。 认证收益 职业能力提升 推动企业…

图神经网络能做什么?

从概念上讲,我们可以将图神经网络的基本学习任务分为 5 个不同的方向: (1)图神 经网络方法; (2)图神经网络的理论理解; (3)图神经网络的可扩展性&#xff1b…

VLAN基础实验

实验要求: 1、PC1和PC3所在接口为Access接口 PC2/4/5/6处于同一网段:其中PC2可以访问PC4/5/6 PC4可以访问PC5,但不能访问PC6 PC5不能访问PC6 2、PC1/3与PC2/4/5/6不再同一网段 3、所有PC通过DHCP获取IP地址,且PC1/3可以正常访问PC2/4/5/6 实…

jenkins——环境变量、节点配置以及节点环境变量的使用

这里写目录标题 一、Jenkins 环境变量1、环境变量分类a、系统内置环境变量b、用户自定义环境变量 2、环境变量的使用3、控制台输出 二、Jenkins 节点配置1、Jenkins的常用节点2、准备工作3、SSH类节点配置4、Java web节点配置5、Java web节点配置详细步骤 三、Jenkins 节点环境…

操作系统八股文知识点汇总

1. 程序编译过程 gcc HelloWorld.c -E -o HelloWorld.i 预处理:加入头文件,替换宏。gcc HelloWorld.c -S -c -o HelloWorld.s 编译:包含预处理,将 C 程序转换成汇编程序。gcc HelloWorld.c -c -o HelloWorld.o 汇编:包…

GEE遥感云大数据在林业中的应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

boot-admin整合Quartz实现动态管理定时任务

淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉、烤串、小饼和蘸料,音乐响起,啤酒倒满,烧烤灵魂的party即将开场的时候,你系统中的Scheduler(调试器),也自动根据…

【操作系统】第一章

文章目录 🌷 一、操作系统的概念1、定义2、功能 和 目标 🌷 二、操作系统的特征1、**并发**2、 **共享**3、 **虚拟**4、 **不确定性** 🌷 三、操作系统的发展与分类1、 手工操作阶段2、 批处理阶段3、 分时操作系统4、 实时操作系统5、 网络…

【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )

文章目录 一、物理像素 / 物理像素比二、代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 一、物理像素 / 物理像素比 移动端 网页开发 与 PC 端开发有很多不同之处 , 在图片处理方向需要采用 二倍图 / 三倍图 / 多倍图 方式进行图片处理 ; 图片处理的方式与如下的 物…

4月26号软件更新资讯合集....

Tpflow V7.0.2,PHP 工作流引擎新版发布 ​欢迎使用 Tpflow V7.0.1 工作流引擎 TpFlow 工作流引擎是一套规范化的流程管理系统,基于业务而驱动系统生命力的一套引擎。彻底释放整个信息管理系统的的活力,让系统更具可用性,智能应用型…

一文学会VSCode代码同步至GitHub

一、上手GitHub 1. 了解GitHub 上手GItHub之前首先要了解一下GItHub的关键词,如下: (1) 仓库 (Repository) 仓库是用来存放项目代码,每一项目对应一个仓库。(2) 收藏 (Star) 收藏别人的仓库,方便自己查找。(3) 复制/克隆项目 (…

数据库基础篇 《12.MySQL数据类型精讲》

目录 1. MySQL中的数据类型 2. 整数类型 2.1 类型介绍 2.2 可选属性 2.2.1 M 2.2.2 UNSIGNED 2.2.3 ZEROFILL 2.3 适用场景 2.4 如何选择? 3. 浮点类型 3.1 类型介绍 3.2 数据精度说明 ​编辑 3.3 精度误差说明 4. 定点数类型 4.1 类型介绍 4.2 开发中…

Ingonyama团队的ZKP加速

1. PipeMSM(cloud-ZK):ZKPFPGA Ingonyama团队2022年发表了论文《PipeMSM: Hardware Acceleration for Multi-Scalar Multiplication》,尝试将ZK操作与FPGA结合,并为未来ZK与ASIC(Application Specific Int…

java_集合统计

1.代码实现&#xff1a; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListUtilEme {public static Map<String,Integer> frequencyOfListElements(List<String> items ) {if (items null…

什么!appium安装不上???快来试试这种方法吧!——appium的手动安装步骤教程

前言 相信你不少软件测试行业小伙伴应该在用npm安装appuim或者是cpm安装appuim途中也碰到下面一些报错吧&#xff0c;接下来小陈教你改为手动安装appium吧。 一、手动下载appium安装包 appuim手动安装包下载链接&#xff1a; appium / Appium.app / Downloads — Bitbucket &a…

< 封装公共导出模块:配合element实现提示 >

封装公共导出模块 &#x1f449; 前言&#x1f449; 一、原理&#x1f449; 二、实现案例&#x1f449; 三、效果演示往期内容 &#x1f4a8; &#x1f449; 前言 在 Vue elementUi 开发中&#xff0c;我们偶尔会遇到需要导出的列表&#xff0c;或者指定位置的导出内容。在一…

瑞萨开发环境搭建

使用keil环境&#xff0c;开发瑞萨renase A4M2 下载MDK 下载MDK&#xff0c;5.37 其它版本 最好使用5.30以上 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k3XGSK5-1682182139410)(https://secure2.wostatic.cn/static/reEunrWa2vsfrcpVZC1nbo…

【错误:A component required a bean of type ‘xxx‘ that could not be found.解决办法】

在学谷粒商城项目的时候出现了以下问题&#xff1a; *************************** APPLICATION FAILED TO START *************************** Description: A component required a bean of type org.redisson.Redisson that could not be found. Action: Consider defining a…