python类成员概要

python类成员概要

python类成员分类如图:

简要说明:

1.实例变量(Instance Variables)

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

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

访问:实例.变量名

示例:

python 复制代码
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)

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

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

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

示例:

python 复制代码
class MyClass:
    class_var = "共享值"  # 类变量

# 通过类访问
print(MyClass.class_var)  # 输出: 共享值

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

3.实例方法(Instance Methods)

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

调用:通过实例访问

示例:

python 复制代码
class MyClass:
    def instance_method(self):
        return "这是实例方法"

obj = MyClass()
print(obj.instance_method()) # 输出:这是实例方法

4.类方法(Class Methods)

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

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

示例

python 复制代码
class MyClass:
    @classmethod
    def 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 参数

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

示例

python 复制代码
class MyClass:
    @staticmethod
    def static_method():
        return "这是静态方法"

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

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

定义:以双下划线开头和结尾的方法(如 init, str

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

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

示例

python 复制代码
class MyClass:
    def __init__(self, name):  # 初始化方法
        self.name = name
    
    def __str__(self):         # 定义打印格式
        return f"对象: {self.name}"

obj = MyClass("示例")
print(obj)  # 自动调用 __str__,输出: 对象: 示例

又如:

python 复制代码
class Vector:
    def __init__(self, x, y):
        self.x, self.y = x, y
        
    def __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 方法(可选)

调用:实例.属性

示例:

python 复制代码
class Temperature:
    def __init__(self):
        self._celsius = 0  # 实际存储的私有变量
    
    @property
    def celsius(self):          # Getter 特性
        """获取摄氏度值"""
        return self._celsius
    
    @celsius.setter
    def celsius(self, value):   # Setter 特性
        """设置摄氏度值(自动转换华氏度)"""
        if value < -273.15:
            raise ValueError("温度不能低于绝对零度")
        self._celsius = value
    
    @property
    def 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

相关推荐
杜子不疼.7 分钟前
【C++】玩转模板:进阶之路
java·开发语言·c++
万粉变现经纪人10 分钟前
如何解决 pip install 安装报错 ImportError: cannot import name ‘xxx’ from ‘yyy’ 问题
python·selenium·测试工具·flask·scikit-learn·fastapi·pip
深栈10 分钟前
机器学习:线性回归
人工智能·pytorch·python·机器学习·线性回归·sklearn
simon_skywalker1 小时前
第三章 字典与集合
python
gc_22991 小时前
学习Python中Selenium模块的基本用法(18:使用ActionChains操作鼠标)
python·selenium
拾忆,想起1 小时前
AMQP协议深度解析:消息队列背后的通信魔法
java·开发语言·spring boot·后端·spring cloud
Lululaurel2 小时前
从静态图表到交互叙事:数据可视化的新范式与实现
python·信息可视化·数据分析·matplotlib·数据可视化
蒋星熠2 小时前
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
人工智能·pytorch·python·深度学习·ai·tensorflow·neo4j
qq_340474022 小时前
0.1 tensorflow例1-梯度下降法
人工智能·python·tensorflow
紫钺-高山仰止2 小时前
【Pyzmq】python 跨进程线程通信 跨平台跨服务器通信
服务器·python·github