python类成员概要

发布于:2025-06-14 ⋅ 阅读:(20) ⋅ 点赞:(0)

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:
    @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 参数

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

示例

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 解释器自动执行。

示例

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

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

又如:

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 方法(可选)

    调用:实例.属性

示例:

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


网站公告

今日签到

点亮在社区的每一天
去签到