编程与 AI13 分钟阅读更新于 2026-07-15

Python 类和面向对象怎么入门:什么时候该写 class,什么时候不用

用脚本和小项目场景讲清 Python 类、对象、实例属性、类方法和静态方法,帮助新手判断什么时候需要面向对象。

相关工具

不是所有脚本都需要 class

Python 很灵活,简单脚本用函数就能写得很好。比如批量重命名、清洗文本、转换 CSV,函数拆分已经够用。类更适合处理“有状态、有行为、会被反复使用”的对象。比如一个 API 客户端要保存 base_url、token、超时时间,并提供 get、post 方法,这时写成类会更自然。

不要为了显得高级强行写 class。判断是否需要类,可以问三个问题:有没有一组数据需要长期保存?有没有多个函数都围绕这组数据操作?以后会不会创建多个类似对象?如果答案大多是 yes,就可以考虑类。

一个简单类:

python代码示例
class Article:
    def __init__(self, title, slug):
        self.title = title
        self.slug = slug

    def url(self):
        return f"/guides/{self.slug}"

article = Article("Python 类入门", "python-class")
print(article.url())

__init__ 负责初始化对象

__init__ 是对象创建时自动调用的方法,常用来保存实例属性。self 表示当前对象。很多新手会觉得 self 奇怪,可以先把它理解成“这个对象自己”。不同对象有不同的 self,所以它们的属性互不影响。

示例:

python代码示例
class ApiClient:
    def __init__(self, base_url, token):
        self.base_url = base_url.rstrip("/")
        self.token = token

    def headers(self):
        return {"Authorization": f"Bearer {self.token}"}

client = ApiClient("https://api.example.com", "TOKEN")
print(client.headers())

如果一个函数每次调用都要传 base_url、token、timeout,把这些放进对象里会更省心。后续方法可以直接使用 self.base_url 和 self.token。

类方法和静态方法不要急着用

新手刚学类时,先把普通实例方法用熟就够了。@classmethod 和 @staticmethod 有用,但不是入门第一优先级。类方法常用于替代构造方式,静态方法常用于放在类命名空间里的工具函数,但它们都不应该滥用。

类方法示例:

python代码示例
class User:
    def __init__(self, name, city):
        self.name = name
        self.city = city

    @classmethod
    def from_dict(cls, data):
        return cls(data["name"], data["city"])

user = User.from_dict({"name": "张三", "city": "杭州"})
print(user.name)

如果你只是写几个独立工具函数,放在模块里就行,不一定要塞进类。类应该让代码更清楚,而不是更绕。

面向对象适合小项目组织代码

当脚本慢慢变大,类可以帮你把相关数据和行为放在一起。比如文章采集器、图片处理器、接口客户端、报表生成器,都可以写成类。类的好处是入口清楚,状态集中,方法之间共享配置更方便。

但类也会增加理解成本。一个项目里如果全是继承、重写、魔法方法,新手很难维护。实用做法是:先用函数写通流程,发现有一组配置和方法总是一起出现,再抽成类。这样类是长出来的,不是硬套出来的。

做教程站内容管理时,可以先用字典保存文章数据;等后面需要校验、生成 URL、导出结构化数据,再考虑 Article 类。不要过早抽象。

常见问题

Python 入门必须先学面向对象吗?

不必。先把变量、函数、列表、字典、文件处理用熟,再学类会更顺。

什么时候适合写 class?

当一组数据和多个操作总是一起出现,并且会被反复使用时,适合写 class。

staticmethod 常用吗?

有用但不必滥用。很多静态方法其实放成普通函数更清楚。

Python 实用

继续阅读

返回专题