韩顺平 | 零基础快速学Python(12) OOP基础

news2024/11/26 12:39:18

面向对象编程-基础

类与对象

类提供了把数据和功能绑定在一起的方法。创建新类时创建了新的对象类型,从而能够创建该类型的新实例/对象
类时抽象的概念,作为数据类型代表一类事物;对象时具体实际的,作为实例代表具体事物;类是对象的模板,对象是类的个体,对应一个实例。
对象在内存中的存在形式:
在这里插入图片描述

属性/成员变量

类中定义的属性(变量),也称为成员变量
属性名 = 值 如果没有值可以赋值None,None是Python的内置常量,通常被用来代表空值的对象

类的定义

class 类名:
	属性/成员变量...
	行为/成员方法...

对象的传递机制

在这里插入图片描述

class Person:
	age = None
	name = Name

a = Person()
a.age = 10
a.name = "jack"
b = a 
print(b.name) #jack
b.age = 200
b = None # NoneType
print(a.age) # 200
print(b.age) #报错

对象的布尔值

Python一切皆对象,所有的对象都有一个布尔值,通过内置函数bool()可获取对象的布尔值
False:False、数值0、None、空数据容器

成员方法

类中定义的行为(函数),称为成员方法/方法。

def 方法名(self, 形参列表):
	方法体
  • Python也支持对象动态的添加方法,注意只是针对该对象添加方法 对象.添加的方法名 = 指定方法名
class Person:
	age = None
	name = Name
	def ok(self):
		print("ok")

def hi:
	print("hi")
	
p = Person()
p.m1 = hi
print(type(p.m1), type(hi)) #<class 'function'> <class 'function'>
print(type(p.ok)) # <class 'method'> 运行机制一样,只是名称叫法不同

self

self表示当前对象本身,在成员方法内,访问对象的属性/成员变量self.属性/成员变量

  • 当我们通过对象调用方法时,self会隐式传入
  • 定义成员方法时,需要写上self,如果不写,则需要使用@staticmethod标注,否则会报错。
  • @staticmethod将方普通法转换为静态方法。静态方法不会接收隐式第一个参数。静态方法相比普通方法,处额可以通过对象调用,还可以通过类名调用。
class Dog:
	name = "哈士奇"
	age = 2

	def info(self, name):
		print(f"name信息->{name}")
		
	@staticmethod
	def ok():
		print("ok")

dog = Dog()
dog.info("德牧")
dog.ok()
Dog.ok()

对象作为传参传递

在这里插入图片描述

作用域

成员变量/属性:类中定义的变量,作用域为整个类
局部变量:一般指成员方法中定义的变量,作用域为当前方法
属性和局部变量可以重名,访问的时候带上self代表访问属性

构造方法

需求:用类创建对象时,即指定属性
在初始化对象时,会自动执行__init__方法,传入的参数会自动传递给__init__方法

class Person:
	name = None
	age = None
	
	def __init__(self, name, age):
		print(f"__init__方法执行了 {name} {age}")
		self.name = name
		self.age = age

p1 = Person("kobe", 20) # __init__方法执行了 kobe 20
  • 构造方法没有返回值
  • Python语言中,一个类只有一个__init__方法,即使写了多个,也只有最后一个生效。Python中实现多个构造方法效果的办法
  • Python可以动态地生成对象属性。
class Person:
	# 类没定义属性
	# name = None
	# age = None																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																									
	def __init__(self, name, age):
		print(f"__init__方法执行了 {name} {age}")
		# 此处动态生成属性
		self.name = name
		self.age = age

p1 = Person("kobe", 20) # __init__方法执行了 kobe 20

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

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

相关文章

【c语言】atoi函数---使用和模拟实现(详解)

atoi函数---使用和模拟实现 atoi函数在Cplusplus中的定义 atoi函数的使用 #include <stdio.h> #include <stdlib.h>int main() {char arr[20] "4831213";int ret 0;ret atoi(arr);printf("arr:%s\n", arr);printf("ret:%d\n", re…

JWT重放漏洞如何攻防?你的系统安全吗?

大家好&#xff0c;我是石头~ 在数字化浪潮席卷全球的今天&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为身份验证的利器&#xff0c;已成为众多Web应用的首选方案。 然而&#xff0c;正如硬币有两面&#xff0c;JWT的强大功能背后也隐藏着潜在的安全风险&#xf…

手把手教你如何下载学浪上的视频课程

学浪直播课程下载技术尚未攻克&#xff0c;但视频课程下载却易如反掌。 1.首先解压好我给大家准备好的压缩包 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V10的分享 2.首先解压我…

OpenHarmony编译构建系统

这篇来聊聊OpenHarmony的编译构建&#xff0c;经过前面的实践&#xff0c;再来看编译构建。 编译构建概述 在官网中提到了&#xff0c;OpenHarmony编译子系统是以GN和Ninja构建为基座&#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能…

数据采集仪:自动化监测系统的核心组件

在当代的工业自动化领域&#xff0c;数据采集仪成为了一个关键的技术工具&#xff0c;它不仅仅是简单地将电信号转化为数据信号&#xff0c;而是能够实时、有效地处理和显示各种信号&#xff0c;确保整个监测系统的稳定、高效运行。 点击输入图片描述&#xff08;最多30字&…

计算机网络 子网掩码与划分子网

一、实验要求与内容 1、需拓扑图和两个主机的IP配置截图。 2、设置网络A内的主机IP地址为“192.168.班内学号.2”&#xff0c;子网掩码为“255.255.255.128”&#xff0c;网关为“192.168.班内学号.1”&#xff1b;设置网络B内的主机IP地址为“192.168.班内学号100.2”&#…

JWT详解及实战教程

目录 1.什么是JWT 2.JWT能做什么 3.为什么是JWT 基于传统的Session认证 基于JWT认证 4.JWT的结构是什么? 5.使用JWT 6.封装工具类 7.整合springboot 1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way…

CSS-浮动文字环绕布局、隐藏属性display、overflow、三角形制作、鼠标样式

文字环绕布局 CSS文字环绕布局是指在网页中让文字环绕在图片或其他元素周围的布局方式。这通常通过CSS中的float属性来实现。你可以将图片设置为float: left;或float: right;&#xff0c;然后在文本元素中使用clear属性来清除浮动&#xff0c;以确保文字不会覆盖图片。另外&am…

python爬虫-------urllib代理和代理池(第十七天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

介绍一个方便的python包和环境管理软件Anaconda,如何快速安装

为什么要安装Ananconda&#xff1f; Anaconda是一个方便的python包管理和环境管理软件&#xff0c;一般用来配置不同的项目环境。它通过管理工具包、开发环境、Python版本&#xff0c;大大简化了工作流程。不仅可以方便地安装、更新、卸载工具包&#xff0c;而且安装时能自动安…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行&#xff0c;微服务之间的安全以及业务需要&#xff0c;都需要穿递token &#xff0c;而token的传递一般通过header 头来传递。从架构的角度来讲 &#xff0c;一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

伪装目标检测论文阅读之:《Confidence-Aware Learning for Camouflaged Object Detection》

论文地址&#xff1a;link code:link 摘要&#xff1a;   任意不确定性捕获了观测结果中的噪声。对于伪装目标检测&#xff0c;由于伪装前景和背景的外观相似&#xff0c;很难获得高精度的注释&#xff0c;特别是目标边界周围的注释。我们认为直接使用“嘈杂”的伪装图进行训…

分布式系统接口限流方案

Git地址&#xff1a;https://gitee.com/deepjava/test-api-limit.git 方案一、 Guava工具包 实现单机版限流 具体代码见git 方案二、Redis lua脚本 实现分布式系统的接口限流 具体代码见git

计算机视觉——引导APSF和梯度自适应卷积增强夜间雾霾图像的可见性算法与模型部署(C++/python)

摘要 在夜间雾霾场景中&#xff0c;可见性经常受到低光照、强烈光晕、光散射以及多色光源等多种因素的影响而降低。现有的夜间除雾方法常常难以处理光晕或低光照条件&#xff0c;导致视觉效果过暗或光晕效应无法被有效抑制。本文通过抑制光晕和增强低光区域来提升单张夜间雾霾…

Fiddle配置代理,保手机模拟器访问外部网络

前言&#xff1a; 嘿&#xff01;大家好&#xff01;我来带你们玩转Fiddler和Mumu模拟器的组合技了&#xff01;此组合技能帮助你实现在模拟器上畅游外部网络。相信我&#xff0c;它会让你的开发和测试过程更加轻松愉快&#xff01;废话不多说&#xff0c;赶紧展开我们的冒险吧…

家庭网络防御系统搭建-siem之security onion 安装配置过程详解

本文介绍一下security onion的安装流程&#xff0c;将使用该工具集中管理终端EDR和网络NDR sensor产生的日志。 充当SIEM的平台有很多&#xff0c;比如可以直接使用原生的elastic以及splunk等&#xff0c;security onion的优势在于该平台能够方便的集成网络侧&#xff08;比如…

秋云uCharts 高性能跨平台图表库,支持H5、APP、小程序、Vue、Taro等更多支持canvas的框架平台

秋云uCharts 高性能跨平台图表库&#xff0c;支持H5、APP、小程序、Vue、Taro等更多支持canvas的框架平台 一、引言 随着移动互联网的快速发展&#xff0c;跨平台开发的需求日益增长。为了满足这一需求&#xff0c;许多开发者致力于开发能够在多个平台上运行的应用程序。然而&…

华为OD-C卷-攀登者1[100分]

攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图 地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,1…

如何在前后端一体的项目中引入element-ui,即引入index.js、index.css等文件。

24年接手了一个18年的项目&#xff0c;想使用el-ui的组件库&#xff0c;得自己手动引入。 通过官网可以知道&#xff0c;首先得准备以下文件 <!-- 引入样式 --> <link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css…

【40分钟速成智能风控11】数据测试与应用

目录 ​编辑 数据测试与应用 联合建模机制 数据质量评估 覆盖率 稳定性 模型效果 投资回报率 线上应用 数据安全合规 数据测试与应用 智能风控模型的搭建离不开机构内外部的数据源&#xff0c;如何从海量数据源中挑选出最合适的部分进行特征工程和风控建模&#xff…