python学习笔记——类

news2024/11/27 16:41:47

1. 类和对象****

类、类属性、类方法不需要实例化就可以直接访问

实例相关,如实例属性、实例方法必须实例化后才可以访问

1.1. 类、类属性、实例属性、私有属性****

1.1.1. 定义****

类就是拥有相同属性和功能对象的集合

动物:猫、狗、鸡

人类:吃、喝、睡

1.1.2. 创建****

1. Class 类名称:

2. Class 类名称():

1.1.3. 类属性(内外部访问)****

定义在类里面的,在方法函数外面的属性,就叫类属性

不需要实例化

# 类

class Dog:
dog_name = '小黑' # 类属性*
**
**# 实例方法
***def eat(self):
print('吃肉')
1.1.3.1. 访问****

.类名称.类属性名称

实例.类属性名称

# 类的实例化*
a = Dog()
# 实例 . 类属性名称
*a.dog_name()

Dog是类

a是类实例

类属性可以直接访问,不需要实例化

# 类*
class Dog:
dog_name = '小黑' # 类属性
**dog_color = '黑色' # 类属性
**
**# 实例方法
***def eat(self):
print(Dog.dog_name,'吃肉')

    def look(self):
print(Dog.dog_color,'看家')

a = Dog() # 类实例化*
a.eat() # 类实例调用实例方法
a.look() # 类实例调用实例方法*

小黑 吃肉

黑色 看家

1.1.4. 实例属性(内外部访问)****

1.1.4.1.  __init__初始化方法****

在类实例化的时候自动调用,需要实例化

def init(self):

Self:指实例文本,是一个占位符,习惯写法为self比较见名知意

Self == 类实例

1.1.4.2. 定义****

Self.属性名

定义在魔法方法__init__(初始化方法)中

class Dog:
dog_name = '小黑' # 类属性*
**def init(self):
self.dog_color = '黑色'    # 实例属性
**
**# 实例方法
***def eating(self):
print(Dog.dog_name,'正在吃骨头...')
print('狗的颜色',self.dog_color)

if name == 'main':
a = Dog()
a.eating()

小黑 正在吃骨头...

狗的颜色 黑色
1.1.4.3. 访问****

1. 类里面访问

Self.变量名

2. 类外面访问

类实例.名称

1.1.5. 私有属性(只可内部访问)****

1.1.5.1. 定义****

并不是所有属性都可以被外部访问,不能被外部访问的属性就叫私有属性

只能在类的内部使用

1.1.5.2. 创建****

1.2. 函数调用扩展****

1. 函数名称()

2. 在类的内部:self.函数名称()

3. 在类的外面:类实例.函数名称() == 类().函数名称

class Test:
# init 在实例化后自动调用, 自动 执行 , 执行完之后才会执行其他函数*
**def init(self):
self.name = '20240226'
print(self.name)
# 类方法
***def test01(self):
print('test01方法')

    def test02(self):
# 函数调用(类里面*
***self.test01()

if name == 'main':
# 实例化*
**a = Test()
# 类方法 / 函数的调用(类外面)
***a.test01()
a.test02()

20240226

test01方法

test01方法

1.3. 类的特性****
1.3.1. 继承****
如果子类和父类有相同名称的属性或者方法,优先使用子类自己的属性或方法。

使用super调用父类的方法,不管子类有没有实现,都是直接从父类开始查找。

定义:子类继承父类之后,就会拥有父类的属性和方法(私有属性和私有方法不能被继承)

1.3.1.1. 语法****
Def 父类(self):

Pass

Def 子类(父类):

Pass



# 父类*
*class Test01:
def eat(self):
print('吃饭')

    def sleep(self):
print('睡觉')

    def study(self):
print('学习')

# 子类*
*class Test02(Test01):
pass

if name == 'main':
a = Test02()
a.study()

学习

1.3.1.2. Super 子类调用初始方法****
Def 父类(self):

Def init(self):

pass

Pass

Def 子类(父类):

Def init(self):

Super().init()

Pass

# 父类*
class Test01:
def init(self):
self.name = 'Alison'
def eat(self):
print('吃饭')
def sleep(self):
print('睡觉')
def study(self):
print('学习')
# 子类
*class Test02(Test01):
def init(self):
super().init()
if name == 'main':
a = Test02()
a.study()
print(a.name)

学习

Alison

1.3.2. 多继承****

一个类继承了多个类就叫多继承,此时他会拥有他继承的所有类方法和属性(私有属性和方法不会被继承)

多继承不建议使用

1.4. 对象****

对象是类的实体(具体)

萨摩耶、金毛

沃尔沃、凯迪拉克

1.5. 封装****

隐藏了对象的属性和实现细节,只对外提供一个使用的接口或者入口

1.6. 多态****

1.7. 实例方法、类方法、静态方法****

1.7.1. 实例方法****

定义在类中,第一个参数【实例对象】,习惯用self来表示他

调用:实例.方法名

class Test01:
name = '大黄'
# 实例方法*
**def test01(self):
print('test01')
# 类方法
**@classmethod
def test02(cls):
print('test02')
if name == 'main':
# 实例化类
**a = Test01()
# 调用实例方法
***a.test01()

test01

1.7.2. 类方法****

定义再类中,通过@classmethod修饰之后,第一个参数是类本身cls(和self的意义一样)

@classmethod
def test02(cls):
print('test02')

调用:调用方法同类属性

类.类方法****

class Test01:
name = '大黄'
# 实例方法*
***def test01(self):
pass

     # 类方法*
***@classmethod
def test02(cls):
print('test02')

if name == 'main':
# 调用类属性*
**print(Test01.name)
# 调用类方法 - 调用方法和调用类属性一样
***Test01.test02()

大黄

test02

1.7.3. 静态方法****

定义在类中,通过@staticmethod修饰后就是静态方法,没有self或者cls占位符

# 静态方法*
*@staticmethod
def test03(self):
pass

调用:

类名称.类方法()

类实例.类方法()

1.7.4. 使用场景****

类方法 vs 静态方法 的区别

相同点:都是在类下面,可以通过类直接调用

都是可以被实例调用

不同点:类方法可以使用类的方法和静态方法

静态方法不可以使用类的属性和方法

使用场景:当类不能重复初始化的时候,就可以使用类方法或者实例方法

重复初始化是指:

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

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

相关文章

PCA算法(Principal Component Analysis)揭秘

经典PCA算法 PCA算法的应用包括降维、有损数据压缩、特征抽取、数据可视化等。目前PCA算法有两个通用定义,能殊途同归,得到相同的结果。一方面,我们可以用正交投影来定义PCA,即将数据投影到更低维的线性子空间,也被称…

【LAMMPS学习】八、基本知识的讨论(1.2)可视化 LAMMPS 快照

8. 基本知识的讨论 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和…

【单】Unity _RPG项目中的问题

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏: ⭐…

CVE-2023-2928 DedeCMS 文件包含漏洞getshell 漏洞分析

DedeCMS(也称为织梦CMS)是一款基于PHPMySQL的开源内容管理系统。 在 DedeCMS 5.7.106 及之前的版本中发现一个漏洞。它已被宣布为关键。受此漏洞影响的是未知功能的文件uploads/dede/article_allowurl_edit.php。对参数 allurls 的操作会导致代码注入。…

用three.js 制作鸡你太美游戏——只因大逃杀

看到网上有好多关于坤坤的游戏,自己突发奇想,用前端的three.js制作一款同人游戏,因是初学three.js,开发的游戏内容相对较少,但作为一个真正的man必须得玩一下 链接: 只因大逃杀https://www.jaron.top/app…

【ZBrush】制作章鱼练习 01——头部

目录 本篇效果 步骤 一、准备工作 二、制作头部外形 三、制作眼睛 本篇效果 步骤 一、准备工作 我们需要制作的模型如下 首先创建一个球体 点击编辑对象 点击“生成 多边形网格物体” 选择“MatCap Gray”材质,颜色设置为白色 要打开“Mrgb”通道和“绘制”选…

MySQL学习笔记------多表查询

目录 多表关系 一对多 多对多 一对一 多表查询 概述 分类 内连接(交集) 隐式内连接 显式内连接 ​编辑 外连接(from后为左表,join后为右表) 左外连接 右外连接 自连接 联合查询(union&#…

怎么寻找免费3D模型网站?

无论是建筑设计、产品设计还是动画制作,3D模型都发挥着不可或缺的作用。然而,寻找高质量且免费的3D模型并非易事。那么怎么寻找免费3D模型网站? 1.网络搜索:在搜索引擎中输入“免费3D模型网站”或类似的关键词,可以得到一系列相关…

【GEE】下载研究区的Landsat8去云清晰影像

如果你要绘制研究区概况或者是做一个产品的比较 需要整个研究区的Landsat8影像的话 你可以使用下面代码 // 定义研究区域 var table ee.FeatureCollection("projects/ee-1261423515/assets/EHEimage/EHE"); function rmCloud (image){var qa image.select(pixel_…

顺子日期(StringBuffer)

题目 public class Main {static int[] date new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};public static boolean res(StringBuffer s) {String ss s.toString();//yyrrfor(int i0;i<2;i) {int x Integer.parseInt(s.charAt(i)"");int y Integer.par…

近期整理的前端面试问题大集合【附带答案版】

目录 1、vue的双向绑定原理是什么&#xff1f;里面的关键点在哪里&#xff1f; 2、实现水平垂直居中的方式&#xff1f; 3、常用伪元素有哪一些&#xff1f; 4、移动端如何适配不同屏幕尺寸&#xff1f; 5、本地存储有哪一些&#xff1f;他们三者有什么区别&#xff1f; …

【网站项目】农业信息管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

配置 施耐德 modbusTCP 分布式IO子站 PRA0100

模块官方介绍&#xff1a;https://www.schneider-electric.cn/zh/product/BMXPRA0100 1. 总体步骤 2. 软件组态&#xff1a;在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮&#xff0c;选择正确的 DIO …

直播美颜SDK:AI视觉技术在直播平台中的创新与实践

在直播平台里&#xff0c;主播们通过各种形式的内容吸引着观众&#xff0c;而其中一项重要的技术创新便是直播美颜SDK的应用。本文将探讨这一技术在直播平台中的创新与实践。 一、直播美颜SDK的背景 随着社交媒体的兴起&#xff0c;人们对于自己的形象越来越注重&#xff0c;尤…

vlan和vxlan是什么?有什么区别?

VLAN是二层技术&#xff0c;处于同一个广播域&#xff0c;如果2台主机属于同一个VLAN&#xff08;广播域&#xff09;&#xff0c;它们之间可以直接使用MAC地址通信。 主机A、B位于VLAN 10&#xff0c;同一个广播域&#xff0c;主机A可以主机B用MAC地址通信。 主机C位于VLAN 2…

数据挖掘及其近年来研究热点介绍

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

Spring: 后端状态码如何与http状态码保持一致

文章目录 一、背景二、解决方案 一、背景 今天使用postman在做接口测试的时候发现了一个有趣的问题&#xff1a;响应体的status和http的status一样&#xff0c;出于好奇对该现象进行了总结。 二、解决方案 通过拦截器ResponseBodyAdvice&#xff0c;做到统一拦截 Controll…

论文笔记:Detecting Pretraining Data from Large Language Models

iclr 2024 reviewer评分 5688 1 intro 论文考虑的问题&#xff1a;给定一段文本和对一个黑盒语言模型的访问权限&#xff0c;在不知道其预训练数据的情况下&#xff0c;能否判断该模型是否在这段文本上进行了预训练 这个问题是成员推断攻击(Membership Inference Attacks&…

【算法集训】基础算法:二分查找 | 概念篇

二分枚举&#xff0c;也叫二分查找&#xff0c;指的就是给定一个区间&#xff0c;每次选择区间的中点&#xff0c;并且判断区间中点是否满足某个条件&#xff0c;从而选择左区间继续求解还是右区间继续求解&#xff0c;直到区间长度不能再切分为止。 由于每次都是把区间折半&am…

AI图片四季更替解决方案,一键切换,四季美景尽在指尖

随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;为各行各业带来了前所未有的变革。在图像处理领域&#xff0c;美摄科技凭借领先的AI技术&#xff0c;推出了一款创新的AI图片四季更替解决方案&#xff0c;让风景图…