02面向对象

面向对象

1. class --- 定义类

python 复制代码
class Student:
    pass   # pass 表示「暂时什么都不写」,占位用

类名通常用 大驼峰:Student、TodoItem

2. init --- 构造方法(初始化)

创建对象时,Python 会自动调用 init,用来给实例赋初始值:

python 复制代码
class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score
  • init 前后各两个下划线,是 Python 的特殊方法
  • 第一个参数必须是 self(代表「这个实例自己」)
  • self.name = name:把传入的 name 存到实例上
  • 调用实例方法时,Python 会自动把实例传给第一个参数 self
  • 你写 s.xxx() 时,里面的 self 就是 s

3. 继承

继承语法
python 复制代码
class Animal:          # 父类 / 基类
    ...

class Dog(Animal):     # 子类 / 派生类 --- 括号里写父类名
    ...

Dog 自动拥有 Animal 的属性和方法

子类复用父类的 init ------ super()
python 复制代码
class Animal:
    def __init__(self, name):
        self.name = name

    def eat(self):
        print(f"{self.name} 在吃东西")

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)   # 调用父类的 __init__,设置 self.name
        self.breed = breed       # 子类特有的属性

super() 的含义:调用父类的方法。

这里 super().init (name) = 让父类 Animal 帮你完成 self.name = name。

子类和父类有同名方法时,子类的版本会覆盖父类:

异常处理

try / except

python 复制代码
try:
    result = 10 / 0          # 可能出错的代码
except ZeroDivisionError:
    print("不能除以零!")     # 出错时执行这里
捕获多种异常
python 复制代码
try:
    num = int(input("输入数字:"))
    print(10 / num)
except ValueError:
    print("请输入有效数字")
except ZeroDivisionError:
    print("不能除以零")
捕获所有异常(慎用)
python 复制代码
except Exception as e:
    print(f"出错了:{e}")
else 和 finally
python 复制代码
try:
    result = 10 / 2
except ZeroDivisionError:
    print("不能除以零")
else:
    print(f"计算成功:{result}")   # 只有 try 里没出错才执行
finally:
    print("无论成败都会执行")      # 清理资源时常用

常见异常类型

异常 典型场景
ZeroDivisionError 除以 0
ValueError 类型转换失败,如 int("abc")
TypeError 类型不对,如 "hello" + 5
KeyError dict 里不存在的 key
IndexError list 越界,如 lst999
FileNotFoundError 文件不存在

模块

name

name :每个 .py 文件都有一个内置变量 name

直接运行这个文件时(例如 python 18_exceptions.py),name 等于 "main "。

被别的文

类型注解

python 复制代码
def add(a: int, b: int) -> int:
    return a + b

常见类型写法

含义 写法(推荐 Python 3.9+) 写法(typing 模块,兼容旧版)
整数 int int
字符串 str str
布尔 bool bool
浮点 float float
列表 listint Listint
字典 dictstr, int Dictstr, int
可能为 None int | None Optionalint
python 复制代码
from typing import Optional, List, Dict

def safe_int(s: str) -> Optional[int]:
    ...
python 复制代码
from typing import Union

def safe_divide(a: str, b: str) -> Union[float, str, None]:
    ...
python 复制代码
from typing import TypedDict, 

class User(TypedDict):
    name: str
    city: str

def describe_user(user: User) -> str:
    return f"{user['name']}在{user['city']}居住"
相关推荐
Nebula_g34 分钟前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__43 分钟前
python基础语法学习: 异常的传递性
开发语言·python·学习
AC赳赳老秦1 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
依然鸣1 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
麻雀飞吧2 小时前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学2 小时前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star2 小时前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变2 小时前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
库玛西3 小时前
现代 C++ 智能指针全景指南:从 RAII 思想到工业级实践
c语言·开发语言·c++·笔记·面试
AC赳赳老秦3 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw