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