python学习笔记——类

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()20240226test01方法test01方法1.3. 类的特性****
1.3.1. 继承****
如果子类和父类有相同名称的属性或者方法,优先使用子类自己的属性或方法。使用super调用父类的方法,不管子类有没有实现,都是直接从父类开始查找。定义:子类继承父类之后,就会拥有父类的属性和方法(私有属性和私有方法不能被继承)1.3.1.1. 语法****
Def 父类(self):PassDef 子类(父类):Pass# 父类*
*class Test01:
def eat(self):
print('吃饭')def sleep(self):
print('睡觉')def study(self):
print('学习')# 子类*
*class Test02(Test01):
passif name == 'main':
a = Test02()
a.study()学习

1.3.1.2. Super 子类调用初始方法****
Def 父类(self):Def init(self):passPassDef 子类(父类):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.mzph.cn/news/799761.shtml

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

相关文章

Vue使用高德地图

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码,做好了注释(初始化…

3. Django 初探路由

3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…

【IPV6】--- IPV6过渡技术之6 over 4隧道配置

1. IPV4和IPV6有什么区别? 2. IPV6如何在设备上配置? 3. IPV4和IPV6如何跨协议实现通信? 1. IPV4和IPV6 --- IPV6技术 - IP协议第六版 - 128位二进制数 - 2^12843亿*43亿*43亿*43亿 --- IPV4技术 - IP协议第四版 - 192.1…

腾讯云流量怎么计算的?轻量服务器流量价格表

腾讯云轻量应用服务器套餐带流量包,就是有月流量限制的意思,超出轻量套餐的流量需要另外支付流量费,轻量服务器地域不同超额流量费用也不同,北京上海广州等中国内地地域流量价格是0.8元每GB,中国香港地域流量价格是1元…

兼顾性能的数据倾斜处理方案

目录 前言 一、场景描述 二、常见的优化方法 2.1 Mapjoin 2.2 特殊值/空值打散 2.3 热点值打散,副表呈倍数扩散 2.4 热点数据单独处理/SkewJoin 2.5 方案总结 三、Distmapjoin 3.1 核心思路 3.2 代码实现 3.3 真实效果 四、方案总结 文章主要是介绍在支…

MUX VLAN

目录 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.使用Hybrid端口实现网络需求 3.使用Mux VLAN实现网络需求 原理概述 在实际的企业网络环境中,往往需要所有的终端用户都能够访问某些特定的服务器,而用户之间的访问控制规则则比较复杂。在…

✌2024/4/3—力扣—字符串转换整数

代码实现&#xff1a; int myAtoi(char *str) {long ret 0;int flag 1; // 默认正数// 去除空格及判断符号位while (*str ) {str;}if (*str -) {flag -1;str;} else if (*str ) {str;}// 排除非数字的情况if (*str < 0 || *str > 9) {return 0;}while (*str > …

前端| 富文本显示不全的解决方法

背景 前置条件&#xff1a;编辑器wangEditor vue项目 在pc端进行了富文本操作&#xff0c; 将word内容复制到编辑器中&#xff0c; 进行发布&#xff0c; pc端正常&#xff0c; 在手机端展示的时候 显示不全 分析 根据h5端编辑器内容的数据展示&#xff0c; 看到有一些样式造…

大模型应用解决方案:基于ChatGPT和GPT-4等Transformer架构的自然语言处理

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

性能优化 - 你知道webpack都可以帮我们做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% webpack打包优化主要的思想就是合理利用浏览器缓存、减小代码体积以及减少HTTP请求数量。尽管我们在开发阶段已经做了大量的优化工作,但开发阶段难免存在疏忽,而且源代码也不能直接部署到服务器。可以说…

一起学习python——基础篇(7)

今天讲一下python的函数。 函数是什么&#xff1f;函数是一段独立的代码块&#xff0c;这块代码是为了实现一些功能&#xff0c;而这个代码块只有在被调用时才能运行。 在 Python 中&#xff0c;使用 def 关键字定义函数&#xff1a; 函数的固定结构就是 def(关键字)函数名字…

Spring 源码学习笔记(一)之搭建源码环境

前言 一直以来对 Spring 源码的理解不够全面&#xff0c;也不成条理&#xff0c;只是对其中的某小部分比较了解&#xff0c;所以从今天开始要重新系统学习 Spring 的源码了。 搭建源码环境 首先需要说明的是&#xff0c;源码环境并不是必须的&#xff0c;搭建源码环境唯一的好…

[STL-list]介绍、与vector的对比、模拟实现的迭代器问题

一、list使用介绍 list的底层是带头双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。与其他的序列式容器相比(array&#xff0c;vector&#xff0c;deque)&#xff0c;list通常在任意位置进行…

01.MySQL基础知识回顾

MySQL基础知识回顾 1.为什么要使用数据库 问题 如果把数据存储到内存中&#xff0c;那么重启后就消失了&#xff0c;我们希望一个数据被保存后永久存在于一个地方&#xff0c;也就是需要把数据持久化 什么是持久化 把数据保存到可掉电式存储设备中以供之后使用。大多数情况…

Linux安装最新版Docker完整教程

参考官网地址&#xff1a;Install Docker Engine on CentOS | Docker Docs 一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.6 系统&#xff0c;内核版本为3.10 1.3 安装依赖包 …

MySQL如何创建存储过程

工作中有时候需要自己去创建存储过程&#xff0c;然后调用存储去获得一些数据等&#xff0c;接下来就给大家介绍下MySQL如何创建存储过程。 语法&#xff1a; CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过…

区块链技术与数字身份:解析Web3的身份验证系统

在数字化时代&#xff0c;随着个人数据的日益增多和网络安全的日益关注&#xff0c;传统的身份验证系统面临着越来越多的挑战和限制。在这种背景下&#xff0c;区块链技术的出现为解决这一问题提供了全新的思路和解决方案。Web3作为一个去中心化的互联网模式&#xff0c;其身份…

在线JSON工具

功能支持 ctrls json格式化游览器本地保存ctrla ctrlc 自动检测选中范围是否是全选&#xff0c;然后按照格式化方式添加到粘贴板中json 粘贴JSON自动格式化json可视化修改json压缩复制json层级折叠json关键key 搜索(自动提示高亮)满足某些近视的可以自行调整字体大小, 并且会游…

【Spring】SpringBoot整合MybatisPlusGernerator,MybatisPlus逆向工程

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 在我们写项目的时候&#xff0c;我们时常会因为需要创建很多的项目结构而头疼。项目中的表很多的时候&#xff0c;我们连实体类都创建不完&#xff0c;这时候就需要我们的逆向工程来帮助我们生成我们的框架结构。这些结构…

centos安装使用elasticsearch

1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面&#xff0c;一旦使用 ctrlc退出就会导…