当前位置: 首页 > news >正文

网站建设教程网站/精准防控高效处置

网站建设教程网站,精准防控高效处置,沛县徐州网站开发,商城app开发价格私有和公有 在python中 定义类的时候,可以给 属性和方法设置 访问权限,即规定在什么地方可以使用。 权限一般分为两种:公有权限、私有权限 公有权限 定义:直接定义的属性和方法就是公有的特点: 可以在任何地方访问和使…
  • 私有和公有

在python中 定义类的时候,可以给 属性和方法设置 访问权限,即规定在什么地方可以使用。
权限一般分为两种:公有权限、私有权限

  • 公有权限
  • 定义:直接定义的属性和方法就是公有的
  • 特点: 可以在任何地方访问和使用,只要有对象就可以访问和使用。
  • 私有权限
  • 定义:
    1、只能在类内部定义(class 关键字的缩进中
    2、只需要在属性名 或者方法名 前边 加上两个下划线,这个方法或者属性就变成了私有的。
  • 特点:私有 只能在当前类的内部使用,不能在类外部和子类直接使用。
  • 应用场景:一般来说,定义的属性和方法都为公有的。 某个属性 不想在外部直接使用,定义为私有; 某个方法,是内部的方法(不想在外部使用),定义为私有。
"""定义人类,name 属性 ,age 属性(私有)"""
class Person:def __init__(self, name, age):     # 公有方法self.name = name    # 公有self.__age = age    # 公有 --> 私有,在属性名前加上两个下划线。def __str__(self):     # 公有方法return f'{self.name}, {self.__age}'def set_age(self, age):      # 定义公有方法,修改私有属性if age < 0 or age > 120:print('提供的年龄信息不对。')returnself.__age = ageif __name__ == '__main__':xw = Person('小王', 18)print(xw)    # 小王, 18xw.__age = 1000    # 添加一个公有 属性 __ageprint(xw)   # 小王, 18xw.set_age(110)print(xw)    # 小王, 110
  • 对象分类

python 中一切皆对象

  • 对象分类

类对象 就是类
代码执行的时候,解释器会自动创建
作用:

  • 1、使用类对象创建 实例对象
  • 2、存储一些类的特征值(类属性)
  • 实例对象

1、创建对象也称为实例化,所以 由类对象(类)创建的对象 称为是实例对象,简称实例。
2、一般来说,没有特殊强调,我们所说的对象 都是指 实例对象(实例)
3、实例对象也可以保存实例特征值(实例属性)
4、就是使用 类名()创建的对象。

  • 属性的划分

使用 实例对象.属性 访问属性 的时候,会先在 实例属性中查找,如果找不到,去类属性中查找,找到就使用,找不到就报错。
即 :每个实例对象 都有可能访问类属性值(前提,实例属性和类属性不重名。)

  • 实例属性
  • 概念:
    是每个实例对象 具有的特征(属性)。每个实例对象的特征
  • 定义:
    一般都是 在 init 方法中,使用 self.属性名 = 属性值 来定义。
  • 特征(内存):
    每个实例对象 都会保存自己的实例属性,即 内存中存在多份
  • 访问和修改:
    # 可以认为是通过 self
    实例对象.属性 = 属性值 # 修改
    实例对象.属性 # 访问
  • 类属性
  • 概念:
    是类对象具有的 特征,是整个类的特征
  • 定义:
    一般都是 在类的内部( class 缩进中),方法的外部 (def 的缩进外部) 定义的变量
  • 特征(内存):
    只有类对象保存的一份,即在内存中只有一个。
  • 访问和修改:
    # 即通过类名
    类对象.属性 = 属性值
    类对象.属性
  • 什么时候定义类属性?

代码中 使用的属性 基本上都是 实例属性,即都通过 self 定义。
某个属性值描述的信息是整个类的特征(这个值变动,所有的这个类的对象这个特征都会发生变化)

  • 案例

在这里插入图片描述

# 1. 定义一个 工具类
# 2. 每件工具都有自己的 name
# 3. 需求 —— 知道使用这个类,创建了多少个工具对象?class Tool:# 定义类属性 count,记录创建对象的个数count = 0def __init__(self, name):self.name = name    # 实例属性,工具的名字# 修改类属性的值Tool.count += 1  # 类名.属性 = 属性值if __name__ == '__main__':# 查看 创建对象的个数print(Tool.count)  # 0 查看类.属性tool1 = Tool('锤子')print(Tool.count)  # 1tool2 = Tool('扳手')print(Tool.count)   # 2print(tool2.count)   # 2  先找实例属性 count,找不到,找类属性 count,找到 ,使用。
  • 方法的划分

  • 实例方法

  • 定义时机:
    如果方法中 需要使用 实例属性,则这个方法 必须 定义为 实例方法
  • 定义:
    直接定义的方法就是实例方法
class 类名:def 方法名(self):pass
  • 参数:
    参数一般写做 self,表示的是 实例对象。
  • 调用:
    实例对象.方法名()
  • 类方法
  • 定义时机:
    如果方法中 不需要使用 实例属性,但需要使用 类属性,则这个方法 可以 定义为 类方法(建议)
  • 定义:
    定义类方法,需要在方法名上方 书写 @classmethod, 即使用@classmethod 装饰器装饰
class 类名:@classmethoddef 方法名(cls):pass
  • 参数:
    参数一般写做 cls ,表示类对象,即类名,同样不需要手动传递,Python 解释器会自动传递。
  • 调用:
    # 方法一
    类名.方法名()
    # 方法二
    实例对象.方法名()
  • 静态方法(了解)
  • 定义时机:
    方法中 既不需要使用 实例属性,也不需要使用 类属性,可以将这个方法定义为 静态方法。
  • 定义:
    定义静态方法,需要使用 装饰器吧 @staticmethod 装饰方法。
class 类名:@staticmethoddef 方法名():pass
  • 参数
    静态方法 一般对参数没有要求,一般不写
  • 调用:
    # 方法一
    类名.方法名()
    # 方法二
    实例对象.方法名()
  • 类方法实例
# 1. 定义一个 工具类
# 2. 每件工具都有自己的 name
# 3. 需求 —— 知道使用这个类,创建了多少个工具对象?class Tool:# 定义类属性 count,记录创建对象的个数count = 0def __init__(self, name):self.name = name    # 实例属性,工具的名字# 修改类属性的值Tool.count += 1  # 类名.属性 = 属性值@classmethoddef show_tool_count(cls):   # cls 就是类对象,类名return cls.countif __name__ == '__main__':# 查看 创建对象的个数print(Tool.show_tool_count())tool1 = Tool('锤子')print(Tool.show_tool_count())  # 通过类对象.方法名() 调用tool2 = Tool('扳手')print(tool2.show_tool_count())  # 通过实例对象.方法名()调用
  • 案例一
# 需求:
# 1. 设计一个 Game 类
# 2. 属性:
# • 定义一个 top_score 类属性 -> 记录游戏的历史最高分
# • 定义一个 player_name 实例属性 -> 记录当前游戏的玩家姓名
# 3. 方法:
# • 静态方法 show_help() -> 显示游戏帮助信息
# • 类方法 show_top_score() -> 显示历史最高分
# • 实例方法 start_game() -> 开始当前玩家的游戏
# - ① 使用随机数 生成 10-100 之间数字 作为本次游戏的得分
# - ② 打印本次游戏得分 : 玩家 xxx 本次游戏得分 ooo
# - ② 和历史最高分进行比较, 如果比历史最高分高, 修改历史最高分
# 4. 主程序步骤: main
# 1 查看帮助信息
# 2 查看历史最高分
# 3 创建游戏对象,开始游戏
# 4 再一次游戏
import random
class Game:"""类名: Game属性:top_score = 0 类属性  ,保存历史最高分player_name 实例属性  定义在  init 中方法:"""top_score = 0def __init__(self, play_name):self.play_name = play_name   # 实例属性# 静态方法@staticmethoddef show_help():print('这是游戏的帮助信息')# 类方法@classmethoddef show_top_score(cls):# 类方法 show_top_score() -> 显示历史最高分print(f'历史最高分为: {cls.top_score}')# return Game.top_score  # 类名.属性名def start_game(self):print(f'玩家{self.play_name}开始游戏')score = random.randint(10, 100)print(f'玩家 {self.play_name} 本次游戏得分 {score}')if score > Game.top_score:Game.top_score = scoreif __name__ == '__main__':Game.show_help()Game.show_top_score()player = Game('小明')player.start_game()Game.show_top_score()player = Game('小明')player.start_game()Game.show_top_score()

相关文章:

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…...

【unity小技巧】在 Unity 中,Application获取各种文件路径或访问不同类型的存储路径

文章目录 前言1. **Application.persistentDataPath**2. **Application.dataPath**3. **Application.streamingAssetsPath**4. **Application.temporaryCachePath**5. **Application.consoleLogPath**6. **Application.userDataPath**7. **Application.streamingAssetsPath 与 …...

c++:timer

1.设置休眠时间sleep_for 添加头文件 #include <thread> #include <iostream> #include <chrono> #include <thread>int main(int argc, char const *argv[]) {// 休眠2秒std::this_thread::sleep_for(std::chrono::seconds(2));// 休眠500毫秒std:…...

VSCode(四)CMake调试

1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 &#xff08;shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…...

安装Docker并使用WSL

引言 Windows Subsystem for Linux (WSL) 是一个在Windows上运行Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它允许开发者直接在Windows上运行Linux环境&#xff0c;而无需使用虚拟机。Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用以…...

HCIA-openGauss_2_2连接与认证

设置客户端认证策略 设置配置文件参数 gssql客户端连接-确定连接信息 客户端工具通过数据库主节点连接数据库&#xff0c;因此连接前&#xff0c;需要获取数据库主节点的在服务器的IP地址及数据库主节点的端口号信息。 步骤1&#xff1a;以操作系统用户omm登录数据库主节点。…...

安装 pytorch lighting

1 搜寻配对版本 进入lighting官网&#xff0c;查看配对版本 比如我就选择Python3.11、torch2.4、lightning2.4.0 2 搜寻pytorch安装命令 进入pytorch官网&#xff0c;查看以前版本的下载命令 注意要选择是 gpu版本的pytorch查看自己显卡驱动命令&#xff1a;nvidia-smi查看…...

2024年12月7日历史上的今天大事件早读

1732年12月07日英国皇家大剧院在伦敦开幕 1798年12月07日清代诗人袁枚逝世 1889年12月07日第一个充气轮胎受专利保护 1916年12月07日劳合-乔治出任英国首相 1926年12月07日第一台电冰箱受美国专利保护 1937年12月07日南京保卫战正式打响 1941年12月07日日本偷袭珍珠港 1…...

ORB-SLAM2 ---- 非线性优化在SLAM中的应用(一)

文章目录 一、为什么要讲非线性优化二、运动模型和观测模型三、最大似然估计四、SLAM中最小二乘的应用五、总结 一、为什么要讲非线性优化 相信大家在学习一段时间SLAM后&#xff0c;会发现两个问题。第一个是代码能看懂&#xff0c;但是不知道为什么这样做&#xff08;特别是优…...

FastAPI中创建一个多App架构

1. 创建项目结构 首先&#xff0c;设计一个合理的项目结构。这里以三个Apps为例&#xff1a;users、items 和 orders。2. 项目结构 my_fastapi_project/ ├── main.py ├── app/ │ ├── __init__.py │ ├── users/ │ │ ├── __init__.py │ │ ├─…...

计算机网络原理之HTTP与HTTPS

一、前言 为了理解HTTP&#xff0c;我们有必要事先了解一下TCP/IP协议簇。 通常我们使用的网络&#xff08;包括互联网&#xff09;是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。 计算机与网络设备要相互通信&#xff0c;双方必须基于相同的方法。比如&#…...

完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32(主要是想针对ESP32C3和S3)开发板的鸿蒙系统(失败)

基本上完全按照手册来的&#xff0c;除了Ubuntu虚拟机使用了22.04 Jammy版本&#xff0c;鸿蒙手册里是20.04 版本&#xff0c;主要是鸿蒙里3年前的手册了&#xff0c;所以就擅自用了高版本。 据此还想到一点&#xff0c;鸿蒙LiteOS&#xff0c;还挺稳定的&#xff0c;3年也没有…...

vsphere vcenter web 界面的介绍

这是主页的页面...

【pyspark学习从入门到精通23】机器学习库_6

目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征&#xff0c;而且只用一个系数很难拟合到我们的模型中。 在这种情况下&#xff0c;可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时&#xff0c;将值划分到离散的桶中…...

FPGA实战篇(呼吸灯实验)

1.呼吸灯简介 呼吸灯采用 PWM 的方式&#xff0c;在固定的频率下&#xff0c;通过调整占空比的方式来控制 LED 灯亮度的变化。 PWM&#xff08;Pulse Width Modulation &#xff09;&#xff0c;即脉冲宽度调制&#xff0c;它利用微处理器输出的 PWM 信号&#xff0c;实现对…...

面经自测——自我介绍

前言 这是作者新开的坑&#xff0c;一切题目都是从网上找的原题&#xff0c;为了总结网上有关的面经&#xff0c;以便在真实面试中较为流利的回答面试官的问题 面试之——自我介绍 自我介绍是面试中最常见的问题之一&#xff0c;主要目的是让面试官了解你的背景、技能和职业…...

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍 通常&#xff0c;使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体&#xff0c;其中圆周应力或环状应力是感兴趣的主要应力度量。例如&#xff0c;如果对具有复杂端部处理的几何结构进行此类仿真&am…...

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作&#xff1a;将相同键的所有值收集到一个集合中。实现&#xff1a;不会在map端进行局部聚合&#xff0c;而是直接将所有相同键的数据传输到reduce端进行聚合。缺点&#xff1a;由于没有本地聚合&#xff0c;groupByKey会导致大量的数据传输和shuffle&#xff0c…...

数据库与数据库管理系统概述

title: 数据库与数据库管理系统概述 date: 2024/12/7 updated: 2024/12/7 author: cmdragon excerpt: 在信息化迅速发展的时代,数据已成为企业和组织的重要资产。数据库与数据库管理系统(DBMS)是高效存储、管理和利用数据的核心工具。本文首先定义了数据库的基本概念和特…...

(简单5步实现,免费且比GPT4.0更好用)部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型

摘要&#xff1a; 本文将指导您如何部署一个本地AI大语言模型聊天系统&#xff0c;使用Chatbox AI客户端应用和grok-beta大模型&#xff0c;以实现高效、智能的聊天体验。 引言&#xff1a; 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...

滚珠螺杆导程的定义与重要性

滚珠螺杆导程是指螺杆每旋转一圈时&#xff0c;螺母&#xff08;或与之配合的移动部件&#xff09;沿螺杆轴线方向移动的距离。这个参数在机械设计和制造中非常重要&#xff0c;因为它直接影响到传动系统的速度、精度和效率。 导程是滚珠螺杆的重要参数之一&#xff0c;它与切削…...

【特殊子序列 DP】力扣509. 斐波那契数

斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n > 1 给定 n &…...

linux 架构详解

Linux 是一种开源的操作系统内核&#xff0c;最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核&#xff0c;用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…...

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…...

OpenGL编译用户着色器shader

shader相信很多朋友们都听说过&#xff0c;shader就是运行再GPU上的程序。虽然是这么说&#xff0c;但是我们发现&#xff0c;很多IDE开发工具比如说visual studio 没有办法直接去运行shader代码。这是因为&#xff0c;许多编译器不会自动将shader文件编译成可执行的代码然后发…...

过期策略、内存淘汰机制

1.过期策略&#xff1a;请求时删除 定期删除 请求时删除&#xff1a;使用key之前&#xff0c;检查是否过期&#xff0c;属于一种被动的处理方式。 因此&#xff0c;过期时间到了不表示这个key真的被删除了 定期删除&#xff1a;Redis默认每隔100ms检查&#xff0c;有过期ke…...

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符&#xff0c;表示非数字//4. \w等价于[…...

关于睡懒觉

我们经常听到一个词&#xff1a;睡懒觉。 我认为&#xff0c;睡懒觉这个词&#xff0c;是错误的。 人&#xff0c;是需要睡眠的&#xff0c;睡不够&#xff0c;就不会醒。睡够了&#xff0c;自然会醒&#xff0c;也不想继续睡。不信你试试&#xff0c;睡够了&#xff0c;你…...

【算法day10】栈与队列:拓展与应用

题目引用 逆波兰表达式求值滑动窗口最大值前k个高频元素 1.逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 ‘’、‘-’、‘*’ 和…...

爆肝Android JNI - 延展Android蓝牙JNI学习

零. 前言 由于Bluedroid的介绍文档有限,以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等),加上需要掌握的语言包括Java/C/C++等,加上网络上其实没有一个完整的介绍Bluedroid系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员…...