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

news2024/11/24 17:01:50

文章目录

  • 一、类和对象
    • 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里面的初始化函数,题目移动是创建对象时候才会调用(这个是考点)。

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

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

相关文章

getaddrinfo调用crash 的debug过程

前两天,产线报一例crash问题。拿到core文件后,栈展开信息: (gdb) bt #0 0x00007f64a3651aff in raise () from /lib64/libc.so.6 #1 0x00007f64a3624ea5 in abort () from /lib64/libc.so.6 #2 0x00007f64a3694097 in __libc_message () …

【论文阅读-ICSE2023】预训练目标对代码相关任务的影响

目录 简介有哪些预训练预训练的影响回答RQ1回答RQ2 总结 简介 Title: Automating Code-Related Tasks Through Transformers: The Impact of Pre-training1 Author: Rosalia Tufano, Luca Pascarella, Gabriele Bavota Published: ICSE2023 Abstract: 尽管现在很多研究能够证…

OSS的STS模式授权案例

OSS的STS模式授权 某云提供的权限管理系统主要包含两部分,RAM(资源访问管理)和STS(安全认证服务),以满足不暴露主账号AK\SK的情况下安全的授权别人访问的需求,STS提供的是一种临时访问授权。通…

XSS知识总结

XSS基础 跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这…

楼层滚动效果(超级简单,易懂)

系列文章目录 文章目录 系列文章目录一、楼层滚动效果图如下1. 下图是纯Css实现的楼层滚动2.通过Js优化后的楼层滚动如下图(🌹🌹) 二、楼层滚动(Css实现)1.滚动原理2.代码如下 三、楼层滚动(JsCss优化后的楼层滚动&…

FreeRTOS学习笔记(二)——内核机制

文章目录 0x01 临界段Cortex-M内核快速关中断指令关中断开中断进入和退出临界段的宏进入临界段退出临界段临界段代码应用 0x02 空闲任务与阻塞延时的实现空闲任务的创建实现阻塞延时阻塞等待总结 0x03 多优先级通用方法:taskRECORD_READY_PRIORITY()taskSELECT_HIGH…

微服务学习——服务异步通讯

实用篇-RabbitMQ 初识MQ 同步调用的问题 微服务间基于Feign的调用就属于同步方式,存在一些问题。 耦合度高 每次加入新的需求,都要修改原来的代码性能下降 调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和…

【数据库】事务的隔离级别以及实现原理

文章目录 前言一、事务什么是事务?事务的四大特性分别是 二、事务并发存在的问题脏读可重复读不可重复读幻读 三、以MYSQL数据库来分析四种隔离级别第一种隔离级别:Read uncommitted(读未提交)第二种隔离级别:Read committed(读提交)第三种隔…

此环境变量太大,此对话框允许将值设置为最长 2047 个字符

背景: 自己是一个计算机爱好者,又大体精通计算机各种编程语言,所以电脑上安装的各种编译或者编程软件比较多,有一天需要安装一个多版本的python环境,发现无法添加环境变量,于是乎,自己去查看原因并解决这个…

C语言 sizeof, size_t, strlen

C语言 sizeof, size_t, strlen 文章目录 C语言 sizeof, size_t, strlen一. sizeof1.1 返回结构体长度 二. size_t三. sizeof 和 strlen 一. sizeof 返回一个结构体或者类型所占的内存字节数 1.1 返回结构体长度 这里我编写了2个结构体,区别在于数组问题 #include …

智慧园区gis三维数字孪生可视化平台辅助管理者提升安全管控效力

随着信息技术的发展,3D可视化已经成为交互式管理的主流。智慧3D可视化交互管理平台能够帮助企业实现高效、灵活的管理。 1:智慧3D可视化交互管理平台的基本特性 智慧3D可视化交互管理平台能够实时显示工厂中生产车间的设备和生产线的运行状态,并通过交互…

火焰图怎么看

性能平台 通过该平台可以使用pprof采集线上的服务指标数据生成CPU占用数据并自动绘制出火焰图,Top,以及函数调用图等。 1.1 火焰图 火焰图的深度代表了函数的调用栈,火焰图最深处就是正在执行的函数,上方的都是它的父函数&#x…

C++线程的简单学习及了解

此篇文章只是线程的简单了解。 文章目录 前言一、线程的优缺点二、C线程库 1.thread类的简单介绍2.线程函数参数总结 前言 什么是线程? 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控…

git 使用大全及各种疑难杂症解决方法(长期更新)

Git使用中遇到的各种问题及解决方法 git clone后修改文件然后再上传覆盖 git push出现“Everything up-to-date”解决方法 git commit后如何撤销或修改 git 同步远程和本地的同名分支 git push异常问题出现符号解决方法 git 删除最近或者任意一次提交commit

Http详解

一、什么是Http协议 Http全称为超文本传输协议,是目前使用最主流的 应用层协议, 二、Http工作过程 当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送⼀个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回⼀个 …

DAY06_常用API上

1:API 概述 1.1 API概述 如何自己设计对象并使用 获取已有对象并使用 而关于第一块知识:学习如何自己设计对象并使用,现在已经有一些基础了。 API(Application Programming Interface) :应用程序编程接口 那如何理解应用程序…

软件测试技术(四)白盒测试

白盒测试 白盒测试(White Box Testing)又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误&#xff0c…

IDEA弹出`Lombok requires enabled annotation processing`错误信息

问题背景 项目启动时,弹出一个报错窗口 问题原因 当您使用 Lombok 库时,您可能会遇到Lombok requires enabled annotation processing的错误消息。这是因为 Lombok 库使用了 Java 注解处理器(annotation processor),而…

MySQL学习笔记第四天

第04章运算符 3.逻辑运算符 逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。 MySQL中支持4种逻辑运算符如下: 3.1逻辑非运算符 逻辑非(NOT或!)运算符表示当给定的值为0时返回…

【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务

限流器的算法选项 随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率&#xff0…