在 Python 中,类(Class)是面向对象编程(OOP)的核心。类中可以定义各种方法(函数),用于操作类的属性或实现特定功能。下面是 Python 类中一些常用的方法及其用途,并附带示例说明:
🧱 1. __init__
方法(构造方法)
📌 用途:
- 初始化对象属性
- 创建对象时自动调用
🧪 示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
print(p.name) # 输出:Alice
🧱 2. 实例方法(普通方法)
📌 用途:
- 操作实例属性
- 通过对象调用
🧪 示例:
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return f"Hello, my name is {self.name}"
p = Person("Bob")
print(p.greet()) # 输出:Hello, my name is Bob
🧱 3. 类方法(@classmethod
)
📌 用途:
- 操作类属性(而不是实例属性)
- 第一个参数是
cls
,表示类本身
🧪 示例:
class Dog:
count = 0
def __init__(self):
Dog.count += 1
@classmethod
def how_many(cls):
return f"There are {cls.count} dogs."
d1 = Dog()
d2 = Dog()
print(Dog.how_many()) # 输出:There are 2 dogs.
🧱 4. 静态方法(@staticmethod
)
📌 用途:
- 不访问类属性或实例属性
- 类似于普通函数,只是放在类中以逻辑归类
🧪 示例:
class MathTool:
@staticmethod
def add(x, y):
return x + y
print(MathTool.add(3, 5)) # 输出:8
🧱 5. __str__
方法(字符串表示)
📌 用途:
- 定义对象的字符串表示
- 用于
print()
或str()
时自动调用
🧪 示例:
class Book:
def __init__(self, title):
self.title = title
def __str__(self):
return f"《{self.title}》"
b = Book("Python入门")
print(b) # 输出: 《Python入门》
🧱 6. __repr__
方法(开发者友好的表示)
📌 用途:
- 返回对象的“官方”字符串表示
- 用于调试,或在交互式解释器中显示对象
🧪 示例:
class Book:
def __init__(self, title):
self.title = title
def __repr__(self):
return f"Book('{self.title}')"
b = Book("Python进阶")
print(repr(b)) # 输出:Book('Python进阶')
🧱 7. __del__
方法(析构方法)
📌 用途:
- 对象被销毁时自动调用
- 一般用于资源清理
🧪 示例:
class FileHandler:
def __del__(self):
print("对象被销毁,释放资源")
f = FileHandler()
del f # 输出:对象被销毁,释放资源
🧱 8. 属性方法(@property
)
📌 用途:
- 把方法变成属性调用
- 实现只读属性或属性控制
🧪 示例:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def area(self):
return 3.14 * self._radius ** 2
c = Circle(5)
print(c.area) # 输出:78.5 (注意:不是 c.area())
✅ 总结表格
方法名 | 类型 | 用途说明 |
---|---|---|
__init__ | 构造方法 | 初始化对象 |
实例方法 | 普通方法 | 操作实例属性 |
@classmethod | 类方法 | 操作类属性 |
@staticmethod | 静态方法 | 工具函数,不依赖实例或类 |
__str__ | 特殊方法 | 可读性强的字符串表示 |
__repr__ | 特殊方法 | 调试用字符串表示 |
__del__ | 析构方法 | 对象销毁时清理资源 |
@property | 属性方法 | 把方法变成只读属性 |