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

如何写一个简单的python类class

什么是 class?

在 Python 中,class 是用来定义 类 的关键字。类是面向对象编程(OOP)的核心概念,它是一种蓝图或模板,用于创建对象。对象是类的实例,类定义了对象的属性(数据)和方法(行为)。

类的作用

组织代码:将相关的属性和方法封装在一起,便于管理和复用。

创建对象:通过类可以创建多个具有相同属性和方法的对象。

继承和扩展:可以通过继承扩展已有类的功能。

比如说定义1个类

class Dog:# 初始化方法,用于定义对象的属性def __init__(self, name, breed):self.name = name  # 定义属性 nameself.breed = breed  # 定义属性 breed# 方法:让狗叫def bark(self):print(f"{self.name} is barking!")# 方法:显示狗的信息def show_info(self):print(f"Name: {self.name}, Breed: {self.breed}")

那么如何使用呢,使用的时候肯定得有一个对象,也就是用这个类模板实现的一个实例,只有有了实例,我们才能使用这个对象去做一系列action,也就是定义出来的动作,

# 创建对象
dog1 = Dog("Buddy", "Golden Retriever")
dog2 = Dog("Max", "Bulldog")# 调用方法
dog1.bark()  # 输出:Buddy is barking!
dog2.show_info()  # 输出:Name: Max, Breed: Bulldog

类的组成部分

init 方法:

初始化方法,用于在创建对象时定义属性。

通过 self 参数访问对象的属性。

def __init__(self, name, breed):self.name = nameself.breed = breed

属性:

类中定义的数据,用于存储对象的状态。

示例:self.name 和 self.breed 是属性。

方法:

类中定义的函数,用于实现对象的行为。

示例:bark 和 show_info 是方法。

对象:

类的实例,通过类创建的具体实体。

示例:dog1 和 dog2 是 Dog 类的对象。

将类集成到函数中

类可以与函数结合使用,函数可以调用类的方法或创建类的对象。以下是一个示例:

示例:类与函数结合

class Calculator:def __init__(self, a, b):self.a = aself.b = bdef add(self):return self.a + self.bdef subtract(self):return self.a - self.b# 定义一个函数,使用 Calculator 类
def calculate(a, b):calc = Calculator(a, b)  # 创建 Calculator 对象print(f"Addition: {calc.add()}")  # 调用 add 方法print(f"Subtraction: {calc.subtract()}")  # 调用 subtract 方法# 调用函数
calculate(10, 5)

继承的概念

继承是面向对象编程的重要特性,允许一个类继承另一个类的属性和方法。

# 定义父类
class Animal:def __init__(self, name):self.name = namedef speak(self):print(f"{self.name} is making a sound.")# 定义子类
class Dog(Animal):def speak(self):print(f"{self.name} is barking!")# 使用子类
dog = Dog("Buddy")
dog.speak()  # 输出:Buddy is barking!

整体而言,学过C++的应该对OOP不陌生(据我所知,国内大部分高校,基本上理工科类,大一应该都接触过C或C++,后者为多),当然考虑到"组合大于继承"的编程逻辑,OOP运用与否还是以具体项目特性而定。

http://www.xdnf.cn/news/1057249.html

相关文章:

  • 影视剧学经典系列-梁祝-《闲情赋》
  • 如何让DeepSeek-R1-Distill-Qwen-32B支持Function calling
  • 学习昇腾开发的第三天--将服务器连接网络
  • 【锂电池剩余寿命预测】XGBoost锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 外观模式Facade Pattern
  • 02- 六自由度串联机械臂(ABB)运动学分析
  • C++面向对象编程:简洁入门
  • RPG29:制作ui基础
  • YoloV12改进策略:Block改进|MKP,多尺度卷积核级联结构,增强感受野适应性|即插即用|AAAI 2025
  • 命令模式Command Pattern
  • 多线程并发编程硬核指南:从互斥锁到生产者模型的全场景实战与原理揭秘
  • C++(初阶)(二十一)——unordered_set和unordered_map
  • Addressable-引用计数
  • DDD领域驱动设计学习路线
  • VS202静态库制作和使用指南
  • 【Android】输入路由
  • 将CVAT点云格式标注格式由datumaro转换为kitti格式
  • 软件测试用例(一)
  • Java锁机制:ReentrantLock深度解析与锁粒度优化实践(时序图详解)
  • 交互式编程:编程范式的静默革命
  • 在windows10上安装nvm以及配置环境
  • 【推荐】城市灾害应急管理系统【面试模拟题目——字节跳动面试原题】
  • java复习 13
  • (二十八)深度解析领域特定语言(DSL)第六章——语法分析:巴科斯-诺尔范式
  • 适合 Acrobat DC 文件类型解析
  • 6.15 操作系统面试题 锁 内存管理
  • Appium + .NET 测试全流程
  • 【模拟 贪心】B4207 [常州市赛 2021] 战士|普及+
  • XP POWER EJ ET EY FJ FR 系列软件和驱动程序和手侧
  • verl multi-node train 教程