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

三十三、Python基础语法(面向对象其他语法-下)

一、属性划分

1.类属性

类属性:类属性就是类对象具有的属性,一般写法在类内部、方法的外部定义的变量,就是类属性,类属性在内存中只有一份。可以通过类名直接访问,也可通过实例访问。

class Circle:# 类属性,定义圆周率pi = 3.14159def __init__(self, radius):self.radius = radiusdef calculate_area(self):# 使用类属性计算圆的面积return Circle.pi * self.radius * self.radiusdef calculate_circumference(self):# 使用类属性计算圆的周长return 2 * Circle.pi * self.radius# 创建两个圆对象
circle1 = Circle(5)
circle2 = Circle(8)print(f"圆 1 的面积:{circle1.calculate_area()}")
print(f"圆 2 的面积:{circle2.calculate_area()}")print(f"圆 1 的周长:{circle1.calculate_circumference()}")
print(f"圆 2 的周长:{circle2.calculate_circumference()}")

2.实例属性

实例属性:实例属性就是对象具有的属性,在类中 的 init 方法中, 使用 self 定义的属性,每个实例对象中都存在一份自己的属性信息。

class Person:def __init__(self, name, age):self.name = name  # 实例属性 nameself.age = age    # 实例属性 agedef introduce(self):return f"我是{self.name},今年{self.age}岁。"# 创建两个 Person 类的实例
person1 = Person("小明", 20)
person2 = Person("小红", 22)print(person1.introduce())
print(person2.introduce())

如何判断一个属性是定义实例属性还是类属性?

基本上所有的属性都实例属性,实例属性描述每个实例对象的特有信息,类属性描述的是整个类共有信息。

二、方法的划分

1.实例方法

直接使用def关键字定义的方法就是实例对象方法(实例方法),调用:实例对象.方法名()

class Dog:def __init__(self, name):self.name = namedef bark(self):# 实例方法,打印狗狗的叫声和名字print(f"{self.name}:汪汪!")# 创建一个 Dog 类的实例
my_dog = Dog("小白")# 调用实例方法
my_dog.bark()

2.类方法

类方法:在 def 的上方使用装饰器 @classmethod 装饰的方法,调用:类名.方法名()、对象.方法名()

class Circle:pi = 3.14159def __init__(self, radius):self.radius = radius@classmethoddef from_diameter(cls, diameter):# 类方法,通过直径创建 Circle 实例return cls(diameter / 2)def area(self):return Circle.pi * self.radius * self.radius# 使用类方法创建实例
circle1 = Circle.from_diameter(10)
print(circle1.radius)print(circle1.area())

3.静态方法

静态方法:在 def 的上方,使用装饰器 @staticmethod 装饰的方法,静态方法,它不依赖于类的实例,也不访问类属性或实例属性。它只是一个与类相关的工具方法,可以直接通过类名来调用。

class MathUtils:@staticmethoddef add(a, b):# 静态方法,进行简单的加法运算return a + bresult = MathUtils.add(5, 3)
print(result)  # 输出 8

相关文章:

三十三、Python基础语法(面向对象其他语法-下)

一、属性划分 1.类属性 类属性:类属性就是类对象具有的属性,一般写法在类内部、方法的外部定义的变量,就是类属性,类属性在内存中只有一份。可以通过类名直接访问,也可通过实例访问。 class Circle:# 类属性,定义圆…...

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1)使用向日葵开机棒 缺点是比较贵一点,开机棒要一百多,而且查了评论发现挺多差评说不稳定,会有断联和无法唤醒的情况,而且设置也麻烦,还需要网卡支持WOL 2)使用远程开机卡 …...

Flutter鸿蒙next 状态管理框架对比分析

在 Flutter 开发中,状态管理是一个非常重要且关键的主题。Flutter 中的应用状态管理直接影响着应用的性能、可维护性和开发效率。随着 Flutter 生态的成熟,已经出现了许多不同的状态管理方案,各具特色,适用于不同的开发场景。本文…...

Vue Router进阶详解

导航守卫 若依框架登录鉴权详解(动态路由)_若依鉴权-CSDN博客 完整的导航解析流程 导航被触发: 当用户点击页面中的链接、使用编程式导航(如router.push或router.replace)或手动输入URL时,导航流程被触发。…...

进程的控制

进程 task_struct mm_struct(虚拟地址空间) 页表 代码和数据 。 新建进程先有管理系统,然后才有代码和数据。 fork()函数:子进程返回0,父进程返回的是子进程的pid - - - 方便父进程对子进程标识。 进程终止:释放代码和数据占…...

基于C语言实现的图书管理系统

使用Visual Studio 2022编译工具进行编写代码的。 项目源码直接奉上: book1.h头文件: #ifndef __BOOK1_H //预处理用于条件编译 避免头文件反复包含 #define __BOOK1_H#include<stdio.h> #include <string.h> #include<stdlib.h> #include<stdbool.h&g…...

删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法

如果你也是&#xff1a; 如果你也有类似上面的问题&#xff0c;这篇文章算是你看对了&#xff0c;哦哟&#xff01; 我的牙齿现在是怨灵的牙齿&#xff0c;可以啃下一头牛。 翻遍千山万水&#xff0c;咱们也是终于取到真经了家人们。 首先下一个everything好吗 甩一个官网链…...

ARM base instruction -- ccmp (immediate)

Conditional Compare (immediate) sets the value of the condition flags to the result of the comparison of a register value and an immediate value if the condition is TRUE, and an immediate value otherwise. 此指令一般出现在 cmp 指令之后&#xff0c;表示双重比…...

高德 阿里231滑块 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…...

Unity 的 WebGL 构建中资源图片访问方式

在 Unity 的 WebGL 构建中&#xff0c;资源图片是可以打包在 工程内部 使用的&#xff0c;前提是这些资源被正确地包含在构建中&#xff0c;并且能够通过合适的方式加载和访问。不同于传统的本地文件访问&#xff0c;WebGL 需要通过 Asset Bundles、Addressables 或 Resources …...

WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程

前言 在传统的 WinForms 应用程序开发中&#xff0c;很多开发者使用事件驱动的设计模式&#xff0c;直接将业务逻辑编写在界面代码中。然而&#xff0c;随着应用程序的复杂性增加&#xff0c;单一的界面文件变得臃肿&#xff0c;难以测试和维护。借鉴 WPF 中 MVVM&#xff08;…...

Chrome调试工具(查看CSS属性)

来说说这个Chrome调试工具吧&#xff0c;梦回gdb&#xff0c;但是它没有gdb难 打开浏览器 有两种方式可以直接打开Chrome调试工具 直接按F12 鼠标右键页面 --- 检查元素 什么mc玩家是鸣潮 标签页含义 &#x1f912; elements查看标签结构&#xff08;展示html文件&#…...

MQTT从入门到精通之MQTT入门

MQTT入门 1 MQTT概述 1.1 MQTT简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;由IBM于1999年开发的一种基于**"发布订阅模式"的轻量级的消息传输协议**&#xff01; 发布订阅模式是一种传统的客户端-服务器架构的替代方案&#xff0c;因为…...

Hadoop生态系统主要包括哪些组件以及它们的作用

Hadoop生态系统是一个开源的大数据处理框架&#xff0c;它主要由一系列组件构成&#xff0c;每个组件都承担着不同的功能和作用。以下是Hadoop生态系统的主要组件及其作用的详细解释&#xff1a; HDFS&#xff08;Hadoop Distributed File System&#xff09; 作用&#xff1a…...

OpenResty 1.27.1.1 已经正式发布

OpenResty 1.27.1.1 已经正式发布&#xff0c;这是一个基于 NGINX 和 LuaJIT 的 web 平台。以下是关于此次发布的一些重点信息和更新内容&#xff1a; 下载与安装 你可以在此处下载最新版本的 OpenResty。提供了便携式源代码分发、Win32/Win64 二进制分发以及为 Ubuntu、Debi…...

定高虚拟列表:让大数据渲染变得轻松

定高虚拟列表 基本认识 在数据如潮水般涌来的今天&#xff0c;如何高效地展示和管理这些数据成为了开发者们面临的一大挑战&#xff0c;传统的列表渲染方式在处理大量数据时&#xff0c;往往会导致页面卡顿、滚动不流畅等问题&#xff0c;严重影响用户体验&#xff08;在页面…...

python request与grequests该如何选择

requests & grequests requests 和 grequests 是Python中用于发送HTTP请求的不同库。requests 是一个同步、阻塞式库&#xff0c;而 grequests 是基于 requests 封装的异步非阻塞库&#xff0c;它利用了 gevent 库提供的协程机制&#xff0c;能够并发发送多个请求。 选择…...

Unity3D UI 拖拽

Unity3D 实现 UI 元素拖拽功能。 UI 拖拽 通常画布上的 UI 元素都是固定位置的&#xff0c;我们可以通过实现拖拽接口&#xff0c;让 UI 元素可以被拖拽到其他位置。 拖拽接口 创建一个脚本 UIDrag.cs&#xff0c;在默认继承的 MonoBehaviour 后面&#xff0c;再继承三个接…...

介绍一下memcpy(c基础)

memcpy函数void *memcpy(void *dest, const void *src, size_t n); dest&#xff1a;指向目标内存区域的指针&#xff0c;即复制的目的地。src&#xff1a;指向源内存区域的指针&#xff0c;即要被复制的内容的来源。n&#xff1a;要复制的字节数 主要功能是将src所指向的内存…...

【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0

目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别&#xff1f; 2. HTTPS 的工作原理&#xff1f;&#xff08;https 是怎么建立连接的&#xff09; &#xff08;1&#xff09;ClientHello &#xff08;2&#xff09;SeverHello &#xff08;3&#xff09;客户端回应 &a…...

企业级应用如何利用 TaoToken 构建高可用的大模型服务网关

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业级应用如何利用 TaoToken 构建高可用的大模型服务网关 应用场景类&#xff0c;探讨在中大型企业应用中&#xff0c;为内部多个…...

APK Installer终极指南:在Windows上轻松安装Android应用的完整解决方案

APK Installer终极指南&#xff1a;在Windows上轻松安装Android应用的完整解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上运行An…...

手把手教你用Vector CANape创建第一个AUTOSAR ECU测量工程(附A2L文件配置避坑点)

从零构建AUTOSAR ECU测量工程&#xff1a;Vector CANape实战指南与A2L文件深度解析 在汽车电子开发领域&#xff0c;ECU数据测量与标定是功能验证和性能优化不可或缺的环节。作为Vector工具链中的核心组件&#xff0c;CANape凭借其强大的实时数据采集和分析能力&#xff0c;已成…...

51单片机定时器生成PWM波控制电机转速,从原理到代码调试全流程(基于STC89C52)

51单片机定时器生成PWM波控制电机转速&#xff1a;从寄存器配置到闭环调速实战 在嵌入式控制领域&#xff0c;PWM&#xff08;脉冲宽度调制&#xff09;技术如同精准的"电子油门"&#xff0c;通过调节脉冲占空比实现对电机转速的精细控制。STC89C52RC这颗经典的51内核…...

如何用NoFences告别桌面混乱:一个开源工具的实用指南

如何用NoFences告别桌面混乱&#xff1a;一个开源工具的实用指南 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否曾经面对过这样的场景&#xff1a;早上打开电脑&#…...

基于VSCode Remote-SSH的嵌入式Linux开发环境配置与实战

1. 嵌入式开发流程的痛点与优化思路 作为一名在嵌入式行业摸爬滚打了十多年的老工程师&#xff0c;我太清楚传统开发流程里那些让人头疼的环节了。我们最熟悉的模式&#xff0c;就是在PC上写好代码&#xff0c;用交叉编译工具链生成目标板&#xff08;比如ARM架构的开发板&…...

在RK3568 Android 11上搞定移远EC20 4G模块:从驱动到RIL的完整移植避坑记录

RK3568 Android 11平台EC20 4G模块全流程移植指南&#xff1a;从硬件连接到网络配置 在嵌入式Android开发中&#xff0c;4G模块的集成一直是项目落地的关键环节。本文将基于RK3568平台和Android 11系统&#xff0c;详细解析移远EC20模块从硬件连接到上层应用的全链路移植过程。…...

FanControl终极指南:5步实现Windows风扇精准控制与静音优化

FanControl终极指南&#xff1a;5步实现Windows风扇精准控制与静音优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...

FlicFlac:3分钟掌握Windows音频格式转换的终极免费工具

FlicFlac&#xff1a;3分钟掌握Windows音频格式转换的终极免费工具 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 还在为不同设备间的音频格式兼容性问…...

保姆级教程:用HACS给追觅扫地机装Home Assistant插件,实现iPhone家庭App远程分区清扫

零门槛实现追觅扫地机HomeKit分区控制&#xff1a;HACS插件全流程指南 在智能家居生态中&#xff0c;苹果HomeKit以其出色的隐私保护和流畅的跨设备联动体验&#xff0c;成为许多iPhone用户的首选。但对于使用追觅X10/X20等型号扫地机的用户来说&#xff0c;官方App并未提供与…...