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']}居住"
相关推荐
菜鸡66668 小时前
绕过cf验证,部署 FlareSolverr 服务使用request处理
python·cloudflare
坐吃山猪8 小时前
【多线程】CompletableFuture使用
java·开发语言·多线程
CHPCWWHSU9 小时前
DeepSeek-Harness-Qt将浏览器端Agent装入桌面应用
开发语言·qt
前端 贾公子9 小时前
第10章:RAG(2)
开发语言·python
爱学堂IT分享9 小时前
图灵Java互联网架构师六期
java·开发语言
传奇开心果编程9 小时前
【Rust入门知识点学与练】第3课:String 与 &str 的区别
开发语言·学习·rust
2601_962299499 小时前
使用 Python 将 CSV 转为 PDF(含表格样式美化)
python·pdf·csv·spire.xls·表格样式
秋名RG10 小时前
Java 核心特性一览
java·开发语言
2601_9620779810 小时前
利用Python,四步掌握机器学习
python·机器学习·数据挖掘·数据分析·编程
axinawang10 小时前
requests--爬取网页内容
python