Python 基础入门 Day34:使用类方法与静态方法

111次阅读
没有评论

共计 1349 个字符,预计需要花费 4 分钟才能阅读完成。

欢迎来到 Python 学习第 34 天!今天我们将深入了解 Python 中的 类方法(@classmethod 静态方法(@staticmethod,它们虽然看起来类似,但在实际编程中有着不同的用途和场景。


一、三种方法的对比

在 Python 的类中,我们可以定义三种方法:

方法类型 第一个参数 用途
实例方法 self 访问或修改对象属性
类方法 cls 访问或修改类属性
静态方法 无特定参数 逻辑上属于类,但不操作类或实例的数据

二、类方法 @classmethod

类方法的特点是它的第一个参数是 cls,代表类本身,而不是某个实例。

示例:

class Dog:
    count = 0

    def __init__(self, name):
        self.name = name
        Dog.count += 1

    @classmethod
    def how_many_dogs(cls):
        return f"当前共有 {cls.count} 条狗狗 🐶"

用法:

dog1 = Dog("小黑")
dog2 = Dog("小黄")
print(Dog.how_many_dogs())  # 当前共有 2 条狗狗 🐶

📌 使用场景:

  • 访问 / 修改类变量
  • 构建辅助构造器,例如从字符串、字典等创建实例

三、静态方法 @staticmethod

静态方法不需要 selfcls 参数,它完全是一个属于类的“工具函数”。

示例:

class MathTools:
    @staticmethod
    def add(a, b):
        return a + b

用法:

result = MathTools.add(3, 5)
print(result)  # 8

📌 使用场景:

  • 逻辑上和类有关,但不需要访问类或实例数据
  • 类似于工具类的用途(如数学计算、日期处理)

四、三者对比实战

class Student:
    school = "Python 学院"

    def __init__(self, name):
        self.name = name

    def introduce(self):
        return f"我是 {self.name},来自 {self.school}"

    @classmethod
    def change_school(cls, new_school):
        cls.school = new_school

    @staticmethod
    def welcome():
        return "欢迎加入 Python 学院!"

使用示例:

s1 = Student("小明")
print(s1.introduce())  # 我是 小明,来自 Python 学院
Student.change_school("AI 编程学院")
print(s1.introduce())  # 我是 小明,来自 AI 编程学院
print(Student.welcome())  # 欢迎加入 Python 学院!

五、小结与今日练习

✅ 今日小结:

  • @classmethod 操作类本身,用 cls 参数;
  • @staticmethod 是“与类相关”的独立工具函数;
  • 实例方法、类方法和静态方法在功能、使用时机和访问权限上各有不同。

📝 今日练习:

  1. 编写一个 Book 类,统计创建了多少本书,并实现一个类方法返回当前总数。
  2. 创建一个 Converter 类,使用静态方法实现摄氏度与华氏度的转换。
  3. 拓展一个 User 类,添加类方法用于从用户名字符串批量创建用户实例。

📢 下一节预告(Day35):我们将探索 Python 中的 模块与包 ,学习如何组织代码结构、导入模块、构建自己的库!

正文完
 0
评论(没有评论)