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

python类成员概要

python类成员概要

python类成员分类如图:

简要说明:

1.实例变量(Instance Variables)

    定义:在方法中通过 self.变量名 声明,属于单个实例

    特点:每个实例拥有独立副本,在实例间不共享。

    访问:实例.变量名

示例:

class MyClass:def __init__(self, value):self.instance_var = value  # 实例变量obj1 = MyClass("实例1的值")
obj2 = MyClass("实例2的值")
print(obj1.instance_var)  # 输出: 实例1的值
print(obj2.instance_var)  # 输出: 实例2的值

2.类变量(Class Variables)

    定义:在类中直接声明,所有实例共享的变量

    特点:修改后会影响所有实例

    访问:类名.变量名 或 实例.变量名

示例:

class MyClass:class_var = "共享值"  # 类变量# 通过类访问
print(MyClass.class_var)  # 输出: 共享值# 通过实例访问
obj = MyClass()
print(obj.class_var)  # 输出: 共享值

3.实例方法(Instance Methods)

    定义:第一个参数为 self(指向实例自身)

    调用:通过实例访问

示例:

class MyClass:def instance_method(self):return "这是实例方法"obj = MyClass()
print(obj.instance_method()) # 输出:这是实例方法

4.类方法(Class Methods)

    定义:使用 @classmethod 装饰器,第一个参数为 cls(指向类本身)

    调用:可通过类或实例访问

示例

class MyClass:@classmethoddef class_method(cls):return f"类方法被调用,类名: {cls.__name__}"print(MyClass.class_method())  # 通过类调用,输出:类方法被调用,类名: MyClass
obj = MyClass()
print(obj.class_method())     # 通过实例调用,输出:类方法被调用,类名: MyClass

5. 静态方法(Static Methods)

    定义:使用 @staticmethod 装饰器,无 self 或 cls 参数

    调用:类名.方法名() / 对象名.方法名() ,后者不推荐。

示例

class MyClass:@staticmethoddef static_method():return "这是静态方法"print(MyClass.static_method())  # 通过类调用,输出:这是静态方法
obj = MyClass()
print(obj.static_method())      # 通过实例调用(不推荐),输出:这是静态方法

6.特殊方法(Magic/Dunder Methods)

    定义:以双下划线开头和结尾的方法(如 __init__, __str__)

    作用:实现运算符重载、对象行为定制

    调用:自动调用——特殊方法无需像普通方法一样显式调用(如obj.method()),而是在特定场景或操作触发时由 Python 解释器自动执行。

示例

class MyClass:def __init__(self, name):  # 初始化方法self.name = namedef __str__(self):         # 定义打印格式return f"对象: {self.name}"obj = MyClass("示例")
print(obj)  # 自动调用 __str__,输出: 对象: 示例

又如:

class Vector:def __init__(self, x, y):self.x, self.y = x, ydef __add__(self, other):return Vector(self.x + other.x, self.y + other.y)def __str__(self):return f"Vector({self.x}, {self.y})"v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2  # 触发__add__,得到v3=(4, 6)
print(v3.x, v3.y)  # 输出:4 6
print(v3)  # 输出:Vector(4, 6)

【常见特殊方法简要说明:

__init__(self, ...):初始化实例。

__str__(self):定义print(obj)时的输出格式。

__add__(self, other):重载+运算符(如obj1 + obj2会调用__add__)。

__len__(self):定义len(obj)的返回值。】

7.特性(Properties)

    定义:使用 @property 装饰器,将方法伪装成属性

    作用:实现 getter/setter 控制,封装属性访问。

    组成:

        @property:声明 getter 方法

        @x.setter:声明 setter 方法

        @x.deleter:声明 deleter 方法(可选)

    调用:实例.属性

示例:

class Temperature:def __init__(self):self._celsius = 0  # 实际存储的私有变量@propertydef celsius(self):          # Getter 特性"""获取摄氏度值"""return self._celsius@celsius.setterdef celsius(self, value):   # Setter 特性"""设置摄氏度值(自动转换华氏度)"""if value < -273.15:raise ValueError("温度不能低于绝对零度")self._celsius = value@propertydef fahrenheit(self):       # 只读特性"""获取华氏度值(计算属性)"""return (self._celsius * 9/5) + 32# 使用示例
t = Temperature()
t.celsius = 25      # 调用 setter
print(t.celsius)    # 调用 getter →输出: 25
print(t.fahrenheit) # 调用只读特性 → 输出:77.0
t.celsius = -300    # 触发 ValueError: 温度不能低于绝对零度

附录

Python类的成员介绍 https://blog.csdn.net/cnds123/article/details/130898914

Python中的函数和方法概要 https://blog.csdn.net/cnds123/article/details/148617793

Python命名空间(Namespaces)和作用域(Scopes)讲座 https://blog.csdn.net/cnds123/article/details/108429084

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

相关文章:

  • 当空间与数据联动,会展中心如何打造智慧运营新范式?
  • 当机床开始“思考”,传统“制造”到“智造”升级路上的法律暗礁
  • 驱动开发前传及led驱动(s5pv210)
  • 深度学习——基于PyTorch的MNIST手写数字识别详解
  • Python数据结构与算法(6.1)——树
  • 使用 Spring Boot 和 dynamic-datasource 实现多数据源集成
  • 从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(1)
  • 深入解析 SNMP Walk 的响应机制
  • 智能疲劳驾驶检测系统算法设计与研究
  • 山东大学软件学院项目实训:基于大模型的模拟面试系统项目总结(八)
  • 微信小程序生成小程序码缓存删除
  • 程序是怎么跑起来的第三章
  • 产品成本分析怎么做?从0到1搭建全生命周期分析框架!
  • 基于 Transformer RoBERTa的情感分类任务实践总结之四——PGM、EMA
  • 操作系统导论 第42章 崩溃一致性:FSCK 和日志
  • TEXT2SQL-vanna多表关联的实验
  • 13.安卓逆向2-frida hook技术-HookJava构造方法
  • 动态规划优雅计算比特位数:从0到n的二进制中1的个数
  • FastJSON等工具序列化特殊字符时会加转义字符\
  • 深度学习-163-MCP技术之使用Cherry Studio调用本地自定义mcp-server
  • 门岗来访访客登记二维码制作,打印机打印粘贴轻松实现。
  • 107.添加附件上传取消附件的功能
  • 06_项目集成 Spring Actuator 并实现可视化页面
  • 基于 8.6 万蛋白质结构数据,融合量子力学计算的机器学习方法挖掘 69 个全新氮-氧-硫键
  • OrangePi 5 Max EMMC 系统烧录时下载成功,启动失败解决方案
  • 高开放性具身智能AIBOX平台—专为高校实验室与科研项目打造的边缘计算基座(让高校和科研院所聚焦核心算法)
  • 打卡第43天:Grad CAM与Hook函数
  • 【ffmpeg】windows端安装ffmpeg
  • ES集群的节点
  • 深度学习入门(4):resnet50