类名必须用大驼峰且不能带下划线,如userprofile;方法必须显式声明self并正确空格;参数间及逗号后需单空格;方法间空一行,特殊方法前后不额外空行;类型提示紧随参数名后,返回类型用->标注。

类名必须用大驼峰,且不能带下划线
PEP 8 明确要求类名使用 CapWords(即 PascalCase),比如 UserProfile、HTTPClient。写成 user_profile 或 User_Profile 都是错的——前者是变量命名风格,后者混用了下划线,Python 解析器虽不报错,但违反规范且影响可读性。
常见错误现象:class api_handler:(全小写)、class DataProcessor_v2:(带下划线和数字后缀)。
- 类名中避免缩写,除非是广泛接受的(如
XMLParser、URL) - 首字母必须大写,哪怕只有一个词,比如
Config,不是config - Python 3.12 对此无新限制,但
ast和 linter(如pylint、flake8)会直接标红
方法定义必须显式声明 self,且其后紧跟冒号和空格
self 是实例方法的第一个参数,PEP 8 要求它必须命名为 self(不能是 this 或 me),且与括号间不留空格:def __init__(self) ✔️,def __init__( self ) ❌。
容易踩的坑:在 __init__ 中漏掉 self,或误写成 def __init__(cls)(那是类方法该用的 cls)。
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
- 所有实例方法都必须以
self开头,包括__str__、__eq__等特殊方法 - 参数之间用单个空格分隔,逗号后也加空格:
def connect(self, host, port=8080) - Python 3.12 引入了更严格的 AST 检查,某些拼写错误(如
slf)可能被pyright直接标记为未定义变量
类内方法间至少空一行,特殊方法前后不额外空行
PEP 8 规定:类中方法之间用单个空行分隔;但 __init__ 前后不强制空行,尤其当它是第一个方法时,前面不空,后面只空一行(和下一个普通方法之间)。
典型反例:__init__ 前空两行、方法间空两行、所有方法挤在一起没空行——这些都会被 black 或 autopep8 自动修正,但手动写时容易忽略。
- 类开头注释(如果有)和
class语句之间不空行 - 类结尾不强制空行,但如果后面紧跟另一个类或函数,建议空一行
- Python 3.12 的
ast.unparse()输出会严格遵循此格式,手写不一致可能导致 diff 冗余
类型提示应放在参数后、冒号后,而非等号后
Python 3.12 全面支持 PEP 563(延迟求值注解),但语法位置没变:类型提示必须紧贴参数名之后,用冒号分隔,例如 name: str,不是 name: str = None(这是带默认值的写法,但冒号位置不变)。
常见错误:把类型提示写成赋值形式 name = str,或混淆位置:def __init__(self: MyClass)(self 不需要类型提示)。
- 仅对非
self参数加类型提示,如def add(self, x: int, y: float) -> float: - 返回类型用
->,紧跟在参数括号后,箭头前后各一个空格 - 复杂类型用
typing模块(如list[str]),Python 3.12 已支持内置泛型,无需再从typing导入List
self 这种“看不见的接口”——它不报错,但一错就让整个类无法实例化,而且 IDE 很难实时提示。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










